как получить условный возврат от DisplayAlert в MAUI/Blazor?

не уверен, что это я или документация тупая по этому поводу. но нигде не могу найти ответ.

предыдущий опыт работы с всплывающими уведомлениями, предупреждениями, модальными окнами и т. д., похоже, здесь не совсем подходит. Я хотел бы показать это маленькое предупреждение и сказать: «Эй, брат, ты уверен, что это правильно, прежде чем отправить его и потом пожалеть об этом?» затем, если пользователь говорит «да», разрешите отправку, но если пользователь выберет «нет», вернитесь и позвольте ему внести изменения.

SomePage.razor

      <EditForm Model="sampleModel" OnSubmit="@HandleValidSubmit">
lots of form stuff
<input type="submit" class="btn btn-success" value="Submit">
</EditForm>

@code{
    public async void HandleValidSubmit()
    {
        await DialogService.DisplayConfirm("HEY!", "Double check that info!", "It's correct", "Oops, one sec...");
        //want to have affirmative answer run the if block below
        //and negative answer to give user chance to make changes
        if (!string.IsNullOrWhiteSpace(sampleModel.IncidentNumber))
        {
            await Database.Init();
            Record subRecord = new Record();
            await Database.SaveRecordAsync(subRecord);
            {
                //submit things to database
            };            
        }
    }
}

IDialogService.cs

              internal class IDialogService
    {
        public async Task<bool> DisplayConfirm(string title, string message, string ok , string oops)
        {
                return await Application.Current.MainPage.DisplayAlert(title, message, ok,  oops);
        }
    }

DialogService.cs

          internal class DialogService : IDialogService
    {
    }

MauiProgram.cs

      public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
            });
        builder.Services.AddMauiBlazorWebView();
        builder.Services.AddSingleton<IDialogService, DialogService>();
        return builder.Build();
    }
}

1 ответ

      async void OnAlertYesNoClicked (object sender, EventArgs e)
{
  bool answer = await DisplayAlert ("Question?", "Would you like to play a game", "Yes", "No");
  Debug.WriteLine ("Answer: " + answer);
}

Из документа «Показать всплывающие окна» / «Показать предупреждение»

Спасибо Дэвиду Ортинау @davidortinau

Другие вопросы по тегам