如何在Xamarin.forms中显示视图模型中的Alert视图

rqdpfwrv  于 2023-06-20  发布在  其他
关注(0)|答案(3)|浏览(147)

我正在开发Xamarin混合应用程序,现在我正在使用MVVM架构。我的视图模型是'INotifyPropertyChanged'接口类。我在这个viewmodel类上解析json数据。现在,如果无法从服务器读取JSON数据,或者需要在Alert上向用户显示错误消息,我想显示警报。但它不工作。我知道'DisplayAlert()'将只在页面类上工作。那么我如何从ViewModel页面显示警报呢?我也试过这个,但不起作用;

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

vuv7lop31#

您可以尝试将代码放在Device.BeginInvokeOnMainThread
比如

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

xqkwcwgp2#

从主线程显示警报应在ViewModel“INotifyPropertyChanged”接口类中工作。检查密码

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

wixjitnu3#

在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

相关问题