0

我正在使用使用 GalaSoft 灯光框架(mvvmlight(wpf4))的 MVVM。我在验证用户输入的数据和显示用户输入空/不正确的消息框时遇到问题,我想使用INotifyDataErrorInfo这篇文章,但在 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");
            }
        }
    }

如何Messanger在 mvvm light 中使用输入验证?(从保存按钮向 ViewModel 发送消息以检查输入值。)

4

2 回答 2

2

我想我会补充一下我是如何使用 MVVM light 和Fluent Validation框架完成输入验证(模型验证而不仅仅是输入)的。它对我来说效果很好,并允许您将“IsValid”附加到您的模型中,以便您可以随时进行验证。

我写了一篇关于它的详细博客文章。MVVM 灯光和模型验证

虽然确实 MVVM 灯本身没有任何东西,但我想为其他试图实现这一目标的人提供一种可能的方法。我已经尝试过使用 INotifyDataErrorInfo 和其他方法,发现它们缺少一点。希望它可以帮助某人。

于 2013-12-23T19:13:31.453 回答
1

您可以像这样在 button.click 事件上发送消息..

Messenger.Default.Send<string>("showattraction", "attraction");

第一个字符串是消息,另一个是用于验证它的令牌。

并在您收到此消息的地方执行此操作..在构造函数中..

Messenger.Default.Register<string>(this, "attraction", GetLineDetails);

在 GetLineDetails 方法中做你的工作..

 public void GetLineDetails(string Message)
    {           
        // work here
}
于 2013-07-19T06:59:43.850 回答