如何在Xamarin.forms中从视图模型显示警报视图

时间:2019-01-04 09:43:35

标签: xamarin xamarin.forms

我正在研究Xamarin混合应用程序,现在我正在使用MVVM体系结构。我的视图模型是“ INotifyPropertyChanged”接口类。我在这个viewmodel类上解析json数据。现在,如果无法从服务器读取json数据或需要在Alert上向用户显示错误消息,我想显示Alert。但它不起作用。我知道'DisplayAlert()'仅适用于页面类。因此,如何从ViewModel页面显示警报。我也尝试过,但是没有用;

await App.Current.MainPage.DisplayAlert(Constant.KSorry, Constant.KNoDataAvailable, Constant.KOK);

3 个答案:

答案 0 :(得分:1)

您可以尝试将代码放入public class YourElement : FrameworkElement { protected override void OnRender(DrawingContext dc) { base.OnRender(dc); } }

喜欢

InvalidateVisual()

答案 1 :(得分:0)

从主线程显示警报应该在ViewModel'INotifyPropertyChanged'接口类中起作用。检查代码

if (arrayAlbumList == null) {
   Device.BeginInvokeOnMainThread(() => {
                App.Current.MainPage.DisplayAlert(Constant.KSorry, 
                Constant.KNoDataAvailable, Constant.KOK);
   });
}
else {
  // binding the object here using array
}

答案 2 :(得分:0)

在 MVVM 上,我们可以尝试以下操作

  1. 当你只有一个按钮时

DeviceDevice.BeginInvokeOnMainThread(() => { await App.Current.MainPage.DisplayAlert("Hello", "message", "OK"); });

  1. 当警报对话框中有多个按钮时

var response = await App.Current.MainPage.DisplayAlert("Hello", "message", "OK", Cancel");

在这种情况下不需要 Device.BeginInvokeOnMainThread