gpt4 book ai didi

c# - ViewModel 中的警报对话框 - MVVMCross

转载 作者:可可西里 更新时间:2023-11-01 08:37:34 26 4
gpt4 key购买 nike

ViewModel 中,我有 Save 方法,我在其中检查 isValid 属性。

如果 isValidfalse,那么我想显示一条错误消息。

由于 AlertDialog 是平台特定的,我想知道您如何在 ViewModel 中处理这种情况?

public void Save()
{
if (isValid)
{
OnExit(this, null);
}
else
{
//issue an alert dialog here
}
}

更新

我使用了以下 plugin并按如下方式添加了以下代码行,但会引发错误。

else
{
Mvx.Resolve<IUserInteraction>().Alert("it is not valid");
}

enter image description here

更新 2

Chance.MvvmCross.Plugins.UserInteraction 是一个命名空间,但它被用作类型错误。

enter image description here

更新 3

我已经添加了Acr.UserDialogs插件并调用如下,但是我得到了同样的错误。

Mvx.Resolve<IUserDialogs>().Alert("it is not valid");

enter image description here

最佳答案

使用 ACR User Dialogs是最简单的方法。

在您的 App.cs (Core/PCL) 中,您需要注册接口(interface):

public class App : MvxApplication
{
public override void Initialize()
{
// Example Other registrations
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();

Mvx.RegisterSingleton<IUserDialogs>(() => UserDialogs.Instance);
}
}

然后您可以从您的 ViewModel 调用警报。

Mvx.Resolve<IUserDialogs>().Alert("it is not valid");

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);
}
}

或者

可以关注Mvvmcross document如果您需要更自定义的模式实现,则可以使用接口(interface)的特定于平台的实现。

关于c# - ViewModel 中的警报对话框 - MVVMCross,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37168519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com