cas*_*las 11 c# mvvmcross xamarin
在ViewModel,我有Save检查isValid属性的方法.
如果isValid是false,那么我想显示一条错误消息.
由于AlertDialog是特定于平台,我想知道你如何处理这种情况ViewModel?
public void Save()
{
if (isValid)
{
OnExit(this, null);
}
else
{
//issue an alert dialog here
}
}
Run Code Online (Sandbox Code Playgroud)
更新
我使用了以下插件并添加了以下代码行,如下所示,但它会引发错误.
else
{
Mvx.Resolve<IUserInteraction>().Alert("it is not valid");
}
Run Code Online (Sandbox Code Playgroud)
更新2
Chance.MvvmCross.Plugins.UserInteraction 是命名空间,但它用作类型错误.
更新3
我添加了Acr.UserDialogs插件并调用如下,但我有同样的错误.
Mvx.Resolve<IUserDialogs>().Alert("it is not valid");
Run Code Online (Sandbox Code Playgroud)
Pla*_*d3r 11
使用ACR用户对话框是最简单的方法.
在App.cs(Core/PCL)中,您需要注册界面:
public class App : MvxApplication
{
public override void Initialize()
{
// Example Other registrations
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
Mvx.RegisterSingleton<IUserDialogs>(() => UserDialogs.Instance);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过ViewModel调用警报表单.
Mvx.Resolve<IUserDialogs>().Alert("it is not valid");
Run Code Online (Sandbox Code Playgroud)
Android平台支持注意事项
然后,如果您支持Android,则需要使用活动上下文的实例初始化UserDialog.这将必须在您将使用的每个活动中完成,UserDialogs或者如果您有共享基础活动,则可以在那里进行.
[Activity]
public class MainActivity : MvxActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.activity_main);
// Initialize Acr UserDialogs
UserDialogs.Init(this);
}
}
Run Code Online (Sandbox Code Playgroud)
另外
如果需要更自定义的模式实现,可以按照Mvvmcross文档使用接口的特定于平台的实现.
这就是我在viewmodel中处理Alert消息的方法.试试这个.
await App.Current.MainPage.DisplayAlert("Active subscription required", "You do not have an active subscription for Part 2 exams", "OK");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7906 次 |
| 最近记录: |