簡體   English   中英

如何阻止驗證觸發器在wpf中自動啟動

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM