2009-07-17 45 views
1

在WPF中使用IDataErrorInfo和樣式我希望創建表單,我可以在驗證數據時爲最終用戶提供三種不同的狀態 使場景更清晰使用IDataErrorInfo並設置Validation.HasError樣式

1)我旁邊有文本框我有提供最終用戶的圖標什麼樣的輸入文本框期望 - 信息圖標的初始狀態

2)一旦用戶輸入數據,它就會驗證它並確定它是否有效 - 大多數時候它會顯示交叉(X)圖標說無效數據

3)因爲它在UpdateSourceTrigger="PropertyChanged"上驗證它會在驗證後立即將交叉圖標變爲綠色複選標記

[   ] i (tooltip- Any valid user name) 
[Ga  ] X (tooltip- Invalid user name. Must be 5 char long) 
[Gaurav ] * (it will show only correct icon, meaning valid value) 

如何使用IDataErrorInfo和Style實現此目的,我嘗試這樣做但是一旦我的表單被加載它就會使所有數據無效並在第一次顯示交叉圖標。我想爲三種狀態顯示不同的工具提示和不同的圖標(Initial infoInvalid dataValid data

回答

1

IDataErrorInfo的不包含代表三種狀態中的任何手段。它只知道「錯誤」和「沒有錯誤」。

最好的解決方案可能是通過以下規避使用IDataErrorInfo的的:

  1. 爲每個驗證字段提供了相關領域的三態狀態的屬性。
  2. 將視圖中的ContentControls綁定到這些三態屬性。
  3. 爲所有這些新的ContentControl設置單一樣式。
  4. 在樣式中使用觸發器爲錯誤狀態和有效狀態分配ContentControl.ContentTemplate屬性。對於初始狀態,在樣式中使用Setter可以不顯示任何內容。

您也可能需要爲每個字段的工具提示文本創建屬性。