如何阻止ValidatesOnNotifyDataErrors过于活跃
本文关键字:活跃 于活跃 何阻止 ValidatesOnNotifyDataErrors | 更新日期: 2023-09-27 18:13:57
在我的应用程序中,我使用" validatesonnotifydataerrors "以及" DataAnnotations ",以便用户被警告,如果他们正在编辑的字段是空的或有错误的数据等。我的问题是,当我的视图显示时,所有的文本框都显示警告,因为它们是空的。我想做的是,只有当用户开始在该字段中输入不正确的数据时,或者当他们删除数据并且字段变为空时,才显示警告。
这是我的一个文本框的xaml:
<TextBox Text="{Binding Path=AttributeName, UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=true}" />
下面是后台属性:
private string _attributeName;
[StringLength(128)]
[Required(ErrorMessage = "Field cannot be blank")]
public string AttributeName
{
get { return _attributeName; }
set
{
_attributeName = value;
IsDirty = true;
OnPropertyChanged("AttributeName");
}
}
我想做的是可能与这个框架?
如果您希望文本框不立即显示验证,请删除;
[Required(ErrorMessage = "Field cannot be blank")]
然后包含一个正则表达式,如下所示;
[RegularExpression(@"^[a-zA-Z''-''s]{1,128}$", ErrorMessage = "AttributeName must contain no more then 128 characters and contain no digits.")]
public string AttributeName
{
get { return _attributeName; }
set
{
_attributeName = value;
IsDirty = true;
OnPropertyChanged("AttributeName");
}
}
然后,在正则表达式中,您可以添加或删除某些方面,以便文本框不允许数字,符号等。
正如你注意到的,你可以添加一个字符串的范围来包含,比如{1,128}
(从1个字母到128,之后它将在文本框上显示为红色),所以理论上,你也不需要包括[StringLength(128)]
。
查看这个链接了解更多关于数据注释/属性验证的信息。再看看这个链接