我使用的是使用GalaSoft light Framework(mvvmlight(wpf4))的MVVM。我有问题从用户验证数据输入和显示MessageBox指示用户输入空/错误输入,我想使用INotifyDataErrorInfo
和此article,但不支持wpf4。
private string _password;
private string _userName;
[Required(AllowEmptyStrings = false, ErrorMessage = "Username is required")]
public string UserName
{
get { return _userName; }
set
{
if (_userName != value)
{
// ValidateProperty("UserName", value);
_userName = value;
base.RaisePropertyChanged("UserName");
}
}
}
[Required(AllowEmptyStrings = false, ErrorMessage = "Password is required")]
public string Password
{
get { return _password; }
set
{
if (_password != value)
{
// ValidateProperty("Password", value);
_password = value;
base.RaisePropertyChanged("Password");
}
}
}
如何在mvvm light中使用Messanger
进行输入验证?(从保存按钮向ViewModel发送消息以检查输入值。)
答案 0 :(得分:2)
以为我会添加如何使用MVVM light和Fluent Validation框架取消输入验证(模型验证而不仅仅是输入)。它对我来说效果很好,并允许您将“IsValid”附加到您的模型,以便您随时进行验证。
我写了一篇关于它的详细博客文章。 MVVM Light and Model Validation
虽然真的是MVVM光本身没有任何东西我想为其他人试图提供一种可能的方法。我尝试过使用INotifyDataErrorInfo和其他的方法,发现它们缺少一点。希望它可以帮助某人。
答案 1 :(得分:1)
你可以像这样在button.click事件上发送消息..
Messenger.Default.Send<string>("showattraction", "attraction");
第一个字符串是message,另一个是用于变量的标记..
并且您在此处收到此消息,请执行此操作..构造函数..
Messenger.Default.Register<string>(this, "attraction", GetLineDetails);
在GetLineDetails方法中完成你的工作..
public void GetLineDetails(string Message)
{
// work here
}