как получить условный возврат от 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);
}
Из документа «Показать всплывающие окна» / «Показать предупреждение»