wpf的binding使得資料能夠在資料來源和目標之間流通,在資料流通的中間,便能夠對資料做一些處理。
資料轉換
和資料驗證
便是在資料從源到目標 or 從目標到源 的時候對資料的驗證和轉換。
wpf中提供了乙個抽象類validationrule
,我們自定義的驗證規則都需要繼承它,然後實現它的抽象
方法validate
,該方法需要返回乙個validationresult物件來表示驗證結果。舉個例子,乙個驗證數字
的規則(輸入的只能是數字)
public class numbervalidationrule : validationrule
else}}
其中validationrule的兩個屬性
該屬性可以確定驗證的方向,如果設定為false,那麼只驗證從目標到源的方向,如果為true,還需要注意的是binding對驗證結果的處理,那麼同時也會驗證從源到目標的方向
notifyonvalidationerror
設定為true,即當發生驗證
錯誤時,錯誤資訊會從目標沿著可視樹往上冒泡
,直到該冒泡事件被偵聽到並被處理。
當出現驗證錯誤時,textbox就會有乙個紅色的框,這是預設的錯誤模板樣式,我們如何定義乙個錯誤模板(errortemplate)呢
adornedelementplaceholder表示乙個佔位符,這裡表示具體的控制項即textbox,這裡表示錯誤模板的布局是
如果有驗證錯誤,那麼在textbox的後邊會有乙個textblock文字,文字的內容顯示的是驗證錯誤的資訊。
這裡涉及到了乙個類validation
,它是乙個靜態類,它的使用大多以附加屬性出現。它的主要功能是
1 設定errortemplate
2 判斷是否有錯誤(haserror),以及獲取錯誤列表(errors)
3 偵聽驗證錯誤事件
前兩點前面都有提到,現在來看下 偵聽驗證錯誤冒泡事件
private void validation_onerror(object sender, validationerroreventargs e)
else
}
這裡需要注意的其實就是validationerroreventaction
這個列舉值,因為產生新的驗證錯誤,和清除
原來的驗證錯誤都會觸發這個事件,所以需要區分開來對待。
至此,wpf中的資料驗證差不多了。
WPF中的資料驗證
wpf的binding使得資料能夠在資料來源和目標之間流通,在資料流通的中間,便能夠對資料做一些處理。資料轉換和資料驗證便是在資料從源到目標 or 從目標到源 的時候對資料的驗證和轉換。wpf中提供了乙個抽象類validationrule,我們自定義的驗證規則都需要繼承它,然後實現它的抽象 方法va...
WPF資料驗證之BindingGroup
validationrule objects that are used to validate an object.data guid ad63edaaaabb204a04ed8aba2851189e 包含用於驗證物件繫結和 validationrule 物件的集合。主要用到的函式 begined...
WPF驗證之 必填驗證
要事先必填驗證,首先要重寫validationrule類的validate方法,然後在binding中指定對應的validationrule。第一步 重寫validationrule的validate public class requiredvalidationrule validationrul...