我有一个带有 TextBox 控件的 MVVM 应用程序,我想验证它是否为空。由于应该对每个击键执行评估,我更改了绑定,使其包含
Text={Binding ..., UpdateSourceTrigger=PropertyChanged}
现在我还想在 TextBox 控件失去焦点时执行一个操作,因此 TextBox 控件的默认行为将是合适的。我的问题是我不知道如何组合这两个设置(如果可能的话)。
任何的想法?如何对击键和LostFocus 事件做出反应?
您可以使用附加行为将LostFocus
事件映射到 ViewModel 中的命令。
您通常IDataErrorInfo
会在.INotifyDataErrorInfo
ViewModels
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");
}
}
}
我建议你看看这些文章。
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/
您应该考虑使用IDataErrorInfo
接口和ValidatesOnErrorInfo
属性进行绑定。可以在这里找到一篇关于如何使用这两者的简单的博客文章:http: //asimsajjad.blogspot.de/2010/08/input-validation-using-mvvm-pattern.html