Validation with WPF Silverlight Validation with WPF Silverlight

  • Slides: 38
Download presentation
Validation with WPF & Silverlight グレープシティ株式会社 八巻 雄哉

Validation with WPF & Silverlight グレープシティ株式会社 八巻 雄哉

Validation with WPF & Silverlight 検証の基本 4

Validation with WPF & Silverlight 検証の基本 4

検証の基本 Binding. Validation. Rulesプロパティ Validation. Ruleクラス Validation. Errors添付プロパティ Validation. Errorクラス 検証はValidation. Rulesプロパティに設定 されたValidation. Ruleに基づいて行われる。

検証の基本 Binding. Validation. Rulesプロパティ Validation. Ruleクラス Validation. Errors添付プロパティ Validation. Errorクラス 検証はValidation. Rulesプロパティに設定 されたValidation. Ruleに基づいて行われる。 検証エラーの場合には、Errors添付プロパティに Validation. Errorが追加される。 5

Validation. Rule ルールは大きく分けると 3つ WPF Silverlight Exception. Validation. Rule (例外ベースの入力検証) ○ ○ Data. Error.

Validation. Rule ルールは大きく分けると 3つ WPF Silverlight Exception. Validation. Rule (例外ベースの入力検証) ○ ○ Data. Error. Validation. Rule (IData. Error. Info入力検証) ○ - Validation. Ruleを継承したカ スタムクラス ○ - 7

ルールの設定 簡略記法 Text="{Binding Name, Validates. On. Data. Errors=True}" <Text. Box> <Text. Box. Text> <Binding

ルールの設定 簡略記法 Text="{Binding Name, Validates. On. Data. Errors=True}" <Text. Box> <Text. Box. Text> <Binding Path="Name"> <Binding. Validation. Rules> <Data. Error. Validation. Rule/> </Binding. Validation. Rules> </Binding> </Text. Box. Text> </Text. Box> 8

Bindingオブジェクト Customerオブジェクト 12345 <Binding. Validation. Rules> <Data. Error. Validation. Rule/> </Binding. Validation. Rules> Text.

Bindingオブジェクト Customerオブジェクト 12345 <Binding. Validation. Rules> <Data. Error. Validation. Rule/> </Binding. Validation. Rules> Text. BoxのValidation. Errors添付プロパティにValidation. Errorが追加される。 Validation. Errors添付プロパティ 10

Validation with WPF & Silverlight エラー表示の方法 11

Validation with WPF & Silverlight エラー表示の方法 11

エラー表示の方法 Error. Template 添付プロパティ Validation. States (Visual. State. Group) Has. Error 添付プロパティ イベント WPF

エラー表示の方法 Error. Template 添付プロパティ Validation. States (Visual. State. Group) Has. Error 添付プロパティ イベント WPF Silverlight ○ - WPF 4で追加? ○ ○ Validation. Error 添付イベント ○ Framework. Elemen t. Binding. Validation Errorイベント 12

Error. Template添付プロパティ Validation. Error. Template(Control. Template型) デフォルトのError. Template <Validation. Error. Template> <Control. Template> <Border.

Error. Template添付プロパティ Validation. Error. Template(Control. Template型) デフォルトのError. Template <Validation. Error. Template> <Control. Template> <Border. Brush="#FFFF 0000" Border. Thickness="1, 1, 1, 1"> <Adorned. Element. Placeholder /> </Border> </Control. Template> </Validation. Error. Template> Adorned. Element. PlaceholderはError. Templateが 適用される要素(今回の場合Text. Box)を表す。 13

Has. Error添付プロパティ Validation. Has. Error Validation. Errorが存在する場合はTrue <Style Target. Type="Text. Box"> <Style. Triggers> <Trigger

Has. Error添付プロパティ Validation. Has. Error Validation. Errorが存在する場合はTrue <Style Target. Type="Text. Box"> <Style. Triggers> <Trigger Property="Validation. Has. Error" Value="True"> <Setter Property="Tool. Tip" Value="{Binding Relative. Source={Relative. Source Self}, Path=(Validation. Errors)[0]. Error. Content}"/> <Setter Property="Background" Value="Red"/> </Trigger> </Style. Triggers> </Style> 16

イベント WPF Validation. Error添付イベント Silverlight Framework. Element. Binding. Validation. Errorイベント Validation. Errorが追加/削除された際に 発生するイベント Binding.

イベント WPF Validation. Error添付イベント Silverlight Framework. Element. Binding. Validation. Errorイベント Validation. Errorが追加/削除された際に 発生するイベント Binding. Notify. On. Validation. Errorプロパティを Trueに設定する必要あり。 17

Validation. Error. Event. Action Validation. Error. Event. Args. Action プロパティ Validation. Error. Event. Action.

Validation. Error. Event. Action Validation. Error. Event. Args. Action プロパティ Validation. Error. Event. Action. Added 新しいValidation. Errorオブジェクトが検出された。 Validation. Error. Event. Action. Removed 既存のValidation. Errorが削除された。 If e. Action = Validation. Error. Event. Action. Added Then ‘ 検証エラーが発生した時の処理 Else. If e. Action = Validation. Error. Event. Action. Removed Then ‘ 検証エラーがなくなった時の処理 End If 18

Validation with WPF & Silverlight Validation. Ruleを継承した カスタムクラス 19

Validation with WPF & Silverlight Validation. Ruleを継承した カスタムクラス 19

Validation. Ruleを継承した カスタムクラス Validation. Ruleクラスを継承し、 Validateメソッドをオーバーライド Public Class IDValidation Inherits Validation. Rule Public Overrides

Validation. Ruleを継承した カスタムクラス Validation. Ruleクラスを継承し、 Validateメソッドをオーバーライド Public Class IDValidation Inherits Validation. Rule Public Overrides Function Validate(By. Val value As Object, By. Val culture. Info As System. Globalization. Culture. Info) As System. Windows. Controls. Validation. Result Dim result As Validation. Result If value Is Nothing Then result = New Validation. Result(False, "IDは必須入力項目です。") Else. If (Regex. Is. Match(value, "^[0 -9 A-Z]{4}$") = False) Then 20

Validation with WPF & Silverlight 検証ルールの実行タイミング 21

Validation with WPF & Silverlight 検証ルールの実行タイミング 21

Validation with WPF & Silverlight インスタンス単位の検証 23

Validation with WPF & Silverlight インスタンス単位の検証 23

Binding. Groupプロパティ (WPFのみ) 以下の条件のどちらかを満たしている場合、 Bindingがグループ化される。 BindingのソースとBinding. Groupを設定した要素の Data. Contextが同じ BindingのBinding. Group. Nameプロパティが Binding. GroupのNameと同じ

Binding. Groupプロパティ (WPFのみ) 以下の条件のどちらかを満たしている場合、 Bindingがグループ化される。 BindingのソースとBinding. Groupを設定した要素の Data. Contextが同じ BindingのBinding. Group. Nameプロパティが Binding. GroupのNameと同じ <Grid. Binding. Group> <Binding. Group. Validation. Rules> <local: Object. Validation/> </Binding. Group. Validation. Rules> </Binding. Group> </Grid. Binding. Group> 24

編集トランザクション Private Submit. Button_Click(By. Val sender As System. Object, By. Val e As System.

編集トランザクション Private Submit. Button_Click(By. Val sender As System. Object, By. Val e As System. Windows. Routed. Event. Args) If Layout. Root. Binding. Group. Commit. Edit() Then Message. Box. Show("登録されました。") Layout. Root. Binding. Group. Begin. Edit() End If End Sub Private Sub Cancel. Button_Click(By. Val sender As System. Object, By. Val e As System. Windows. Routed. Event. Args) Layout. Root. Binding. Group. Cancel. Edit() Layout. Root. Binding. Group. Begin. Edit() End Sub 27

Validation with WPF & Silverlight Input. Man for WPF CTP 28

Validation with WPF & Silverlight Input. Man for WPF CTP 28

Input. Man for WPF CTP 7種のコンバーター Boolean. To. Visibility. Converter Date. Format. Converter Date.

Input. Man for WPF CTP 7種のコンバーター Boolean. To. Visibility. Converter Date. Format. Converter Date. Time. Difference. Value. Converter Decimal. Difference. Value. Converter Mask. Format. Converter Number. Format. Converter Object. To. Date. Time. Converter 2種のコンポーネント Gc. Ime. Manager(IMEマネージャ) Gc. Validation. Manager(検証マネージャ) Gc. Validation. ManagerはBinding使用の有無に 関わらず、任意のプロパティ値を検証可能 31

Hello Input. Man Validation Gc. Validationmanagerクラス Validation. Item添付プロパティ <Text. Box x: Name="Text. Box 1"

Hello Input. Man Validation Gc. Validationmanagerクラス Validation. Item添付プロパティ <Text. Box x: Name="Text. Box 1" im: Gc. Validation. Manager. Validation. Item="{Static. Resource Validation. Item_ID}"/> <im: Gc. Validation. Indicator Element. Name="Text. Box 1"/> <Grid. Resources> <im: Validation. Item x: Key="Validation. Item_ID" x: Shared="False" Validated. Property="Text"> <im: Validation. Item. Validation. Rules> <im: Regular. Expression. Rule Expression="^[0 -9 A-Z]{4}$" Error. Content="ID は半角英数大文字 4 文字です。" /> </im: Validation. Item. Validation. Rules> </im: Validation. Item> </Grid. Resources> 33

標準Validationとの連携 Bindingオブジェクト Customerオブジェクト 標準Validationの Has. Errorを監視 12345 Gc. Validation. Manage r Errorsプロパティ 発生したエラーをマージ ※

標準Validationとの連携 Bindingオブジェクト Customerオブジェクト 標準Validationの Has. Errorを監視 12345 Gc. Validation. Manage r Errorsプロパティ 発生したエラーをマージ ※ Gc. Validation. Managerの Include. Binding. Validation. Resultプロパティ をTrueに設定 35

38

38