MVVM Light的输入验证和UI异常

时间:2013-07-19 06:03:46

标签: wpf mvvm-light

我使用的是使用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发送消息以检查输入值。)

2 个答案:

答案 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
}