[英]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.