我可以在WPF(MVVM)中为TextBox控件组合UpdateSourceTrigger的不同设置吗?

时间:2012-09-04 12:33:35

标签: wpf xaml binding textbox

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

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

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

有什么想法吗?如何对LostFocus事件的击键作出反应?

3 个答案:

答案 0 :(得分:2)

您可以使用attached behaviorLostFocus事件映射到ViewModel中的命令。

答案 1 :(得分:1)

您通常会在IDataErrorInfo中实施INotifyDataErrorInfoViewModels个接口,以便在MVVM处理此问题。

此外,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");
        }
    }
}

enter image description here

我建议你看一下这些文章。

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在MVVM中使用Silverlight和WPF进行验证 http://www.arrangeactassert.com/using-idataerrorinfo-for-validation-in-mvvm-with-silverlight-and-wpf/

答案 2 :(得分:1)

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