WPF中的資料驗證

2021-09-25 23:40:07 字數 1563 閱讀 1367

wpf的binding使得資料能夠在資料來源和目標之間流通,在資料流通的中間,便能夠對資料做一些處理。

資料轉換資料驗證便是在資料從源到目標 or 從目標到源 的時候對資料的驗證和轉換。

wpf中提供了乙個抽象類validationrule,我們自定義的驗證規則都需要繼承它,然後實現它的抽象

方法validate,該方法需要返回乙個validationresult物件來表示驗證結果。舉個例子,乙個驗證數字

的規則(輸入的只能是數字)

public class numbervalidationrule : validationrule

else } }

其中validationrule的兩個屬性

還需要注意的是binding對驗證結果的處理,notifyonvalidationerror設定為true,即當發生驗證

錯誤時,錯誤資訊會從目標沿著可視樹往上冒泡,直到該冒泡事件被偵聽到並被處理。

    validationrules:numbervalidationrule> binding.validationrules> binding> textbox.text> textbox>

當出現驗證錯誤時,textbox就會有乙個紅色的框,這是預設的錯誤模板樣式,我們如何定義乙個錯誤模板(errortemplate)呢

  adornedelementplaceholder> textblock> stackpanel> controltemplate> 

adornedelementplaceholder表示乙個佔位符,這裡表示具體的控制項即textbox,這裡表示錯誤模板的布局是

如果有驗證錯誤,那麼在textbox的後邊會有乙個textblock文字,文字的內容顯示的是驗證錯誤的資訊。

這裡涉及到了乙個類validation,它是乙個靜態類,它的使用大多以附加屬性出現。它的主要功能是

1 設定errortemplate

2 判斷是否有錯誤(haserror),以及獲取錯誤列表(errors)

3 偵聽驗證錯誤事件

前兩點前面都有提到,現在來看下 偵聽驗證錯誤冒泡事件

     validationrules:numbervalidationrule> binding.validationrules> binding> textbox.text> textbox> grid> 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...