我有一个组件,它会在切换到其他页面时弹出一个对话框,询问您是否确定要放弃更改。我将其放在每个页面上,如下所示:
<ConfirmNavigation HasUnsavedChanges="@HasUnsavedChanges" />
此组件包括:
[Parameter]
public bool HasUnsavedChanges { get; set; }
private async Task OnBeforeInternalNavigation(LocationChangingContext context)
{
if (!HasUnsavedChanges)
return;
我的问题是,在父页面中,处理提交点击,我有:
HasUnsavedChanges = false;
await Task.Delay(1);
Navigation.NavigateTo(gotoUrl);
这不起作用。该方法在执行完这两行代码后返回,并且ConfirmNavigation
仍然认为HasUnsavedChanges
是 true。
有没有办法让 的改变值变成HasUnsavedChanges
?ConfirmNavigation
我最好的选择是添加一个方法来ConfirmNavigation
设置值吗?我不喜欢这样做,因为它绕开了 ,这HasUnsavedChanges="@HasUnsavedChanges"
违反了组件应该如何交互。