0

我有一个带有 TextBox 控件的 MVVM 应用程序,我想验证它是否为空。由于应该对每个击键执行评估,我更改了绑定,使其包含

Text={Binding ..., UpdateSourceTrigger=PropertyChanged}

现在我还想在 TextBox 控件失去焦点时执行一个操作,因此 TextBox 控件的默认行为将是合适的。我的问题是我不知道如何组合这两个设置(如果可能的话)。

任何的想法?如何对击键LostFocus 事件做出反应?

4

3 回答 3

2

您可以使用附加行为LostFocus事件映射到 ViewModel 中的命令。

于 2012-09-04T12:38:17.460 回答
1

您通常IDataErrorInfo会在.INotifyDataErrorInfoViewModelsMVVM

此外,attributes它们真的很强大,可能会根据您的要求为您提供一个很好的解决方案。在您的ViewModel.

[Required(ErrorMessage = "Field 'Range' is required.")]
[Range(1, 10, ErrorMessage = "Field 'Range' is out of range.")]
public int Range
{
    get
    {
        return this.range;
    }
    set
    {
        if (this.range != value)
        {
            this.range = value;
            this.OnPropertyChanged("Range");
        }
    }
}

在此处输入图像描述

我建议你看看这些文章。

WPF MVVM 应用程序中基于属性的验证 http://www.codeproject.com/Articles/97564/Attributes-based-Validation-in-a-WPF-MVVM-Applicat

验证用户输入 - WPF MVVM http://www.codeproject.com/Articles/98681/Validating-User-Input-WPF-MVVM

在 MVVM 中使用属性和 IDataErrorInfo 接口进行 WPF 验证 http://weblogs.asp.net/marianor/archive/2009/04/17/wpf-validation-with-attributes-and-idataerrorinfo-interface-in-mvvm.aspx

使用 IDataErrorInfo 在具有 Silverlight 和 WPF 的 MVVM 中进行验证 http://www.arrangeactassert.com/using-idataerrorinfo-for-validation-in-mvvm-with-silverlight-and-wpf/

于 2012-09-04T12:41:05.567 回答
1

您应该考虑使用IDataErrorInfo接口和ValidatesOnErrorInfo属性进行绑定。可以在这里找到一篇关于如何使用这两者的简单的博客文章:http: //asimsajjad.blogspot.de/2010/08/input-validation-using-mvvm-pattern.html

于 2012-09-04T12:43:27.720 回答