[英]How to stop the validation trigger to start automatically in wpf
我在ViewModel
中进行了数据验证。 当我加载View
,检查验证而不更改TextBox
的内容,这意味着通过加载视图将错误样式设置为TextBox
这是代码:
XAML
<TextBox {...} Text="{Binding Path=ProductName,
UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True}"/>
在ViewModel
,使用数据注释进行验证:
Code
private string _productName;
[Required(AllowEmptyStrings = false, ErrorMessage = "The Product Name can't be null or empty.")]
[StringLength(50, ErrorMessage = "The Product Name can't be longer than 50.")]
[Uniqueness(Entities.Product, ErrorMessage = "A Product with that Name already exists ")]
public string ProductName
{
get { return _productName; }
set
{
_productName = value;
SaveProduct.OnCanExecuteChanged();
OnPropertyChanged("ProductName");
}
}
如何加载视图时如何停止验证触发?
在插入数据之前,我不希望TextBox
显示错误。
每当为属性引发PropertyChanged
事件时,都将检查验证。
我怀疑你是在构造函数中设置属性 。 而是在加载时,考虑设置属性的备份字段而不是实际属性。
_productName = "TestName";
即使我有同样的问题。 通过使用一个简单的技巧修复它。 我定义了一个私有布尔值
private bool _firstLoad;
在构造函数中,我将_firstLoad
设置为true。 在数据验证期间,如果_firstLoad
为true,则返回String.Empty
。 在设置Property
ProductName
public string ProductName
{
get { return _productName; }
set
{
_productName = value;
_firstLoad = false;
SaveProduct.OnCanExecuteChanged();
OnPropertyChanged("ProductName");
}
}
我将_firstLoad
设置为false。 所以现在当PropertyChanged
事件触发验证时,验证将按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.