Tenho um componente que abrirá uma caixa de diálogo perguntando se você tem certeza de que deseja descartar as alterações ao alternar para uma página diferente. Coloquei em cada página da seguinte forma:
<ConfirmNavigation HasUnsavedChanges="@HasUnsavedChanges" />
E este componente inclui:
[Parameter]
public bool HasUnsavedChanges { get; set; }
private async Task OnBeforeInternalNavigation(LocationChangingContext context)
{
if (!HasUnsavedChanges)
return;
Meu problema é que na página pai, manipulando o clique de envio, eu tenho:
HasUnsavedChanges = false;
await Task.Delay(1);
Navigation.NavigateTo(gotoUrl);
Isso não funciona. O método retorna depois dessas 2 linhas de código e ConfirmNavigation
ainda considera HasUnsavedChanges
true.
Existe uma maneira de fazer algo para que o valor alterado de HasUnsavedChanges
o torne ConfirmNavigation
? Minha melhor aposta é adicionar um método para ConfirmNavigation
que defina o valor? Não gosto disso porque está contornando o HasUnsavedChanges="@HasUnsavedChanges"
que viola como os componentes devem interagir.