你可以使用:
Application.Current.MainPage.DisplayAlert(title, message, buttonText)
但是,在视图模型中使用它是一种不好的做法。
相反,在我看来,最佳做法是将其与视图模型和页面分离。
解决方案是创建一个服务来负责在您的应用程序中显示警报。您可以在下面找到问题的简单答案。但是,DisplayAlert 方法有许多重载,您可以将新方法添加到将使用这些重载的服务中。
一个代码中的两个简单示例:
首先为您的服务实现接口:
public interface IDialogService
{
public Task ShowErrorAsync(string message, string title, string buttonText);
public Task ShowErrorAsync(string message, string title, string buttonText, Action CallBackAferHide);
}
然后,在具体实现中实现接口:
public class DialogService : IDialogService
{
public async Task ShowErrorAsync(string message, string title, string buttonText)
{
await Application.Current.MainPage.DisplayAlert(title, message, buttonText);
}
public async Task ShowErrorAsync(string message, string title, string buttonText, Action CallBackAferHide)
{
await Application.Current.MainPage.DisplayAlert(title, message, buttonText);
CallBackAferHide?.Invoke();
}
}
第一个方法允许您显示警报,第二个方法允许您提供一个回调方法,该方法将在用户关闭警报框后调用 - 例如导航回上一页。
第二种方法两种情况都可以使用,只需调用:
await ShowErrorAsync("message", "title", "OK", null);
CallBackAferHide?.Invoke(); 首先检查是否提供了 Action,如果它不为 null,则调用。
在您的视图模型中,注入服务并调用其提供参数的方法。
我希望这会有所帮助:)。
万事如意!