入力値の検証 |
このトピックでは、コントロールの検証機能を使用した入力値の検証方法について解説します。
数値コントロールでは、ControlValidator クラスから派生した以下のクラスを使用して、入力された値の検証を行うことができます。
ControlValidatorSet プロパティが示す ControlValidatorSet オブジェクトに対して、RangeValidator のインスタンスを設定することにより、入力された値に対する検証が行われます。
メモ |
---|
数値コントロールでは、InputTextValidator クラスによる検証はサポートされません。 |
コントロールの ValidationTrigger プロパティを使用して検証が行われるタイミングを指定できます。コントロールに値が入力され、フォーカスが移動してから検証を行うには、ValidationTrigger プロパティに ValidationTrigger.LostFocus を設定します。フォーカス移動前ですべてのフィールドへ値が入力された時点で検証を行うには、ValidationTrigger.PropertyChanged を設定します。既定値は ValidationTrigger.LostFocus です。
RangeValidator クラスは、入力された値が、MaxValue プロパティおよび MinValue プロパティによって指定された値範囲内かどうかを検証します。このとき、ValueProcessAction プロパティを使用して、値範囲を超えた場合の動作を以下のいずれかから指定できます。
プロパティの値 | 説明 |
---|---|
ValueProcessAction.Keep | 何もしません。 |
ValueProcessAction.Clear | 入力値をクリアします。 |
ValueProcessAction.Restore | 入力前の値を復元します。 |
ValueProcessAction.AdjustToMinMax | 有効範囲内に収まるよう入力値を調整します。 |
フォーカス移動前に範囲外の入力値を ValueProcessAction プロパティの設定に従って値を自動調整するには、次のような設定が必要です。
以下のサンプルコードは、10~150 の値範囲を設定し、コントロールがフォーカスを失ったタイミングで入力値の検証を行う XAML コードです。入力値が値範囲を超えたときは、入力値を保持します。
<StackPanel Width="150"> <im:GcNumber ValidationTrigger="LostFocus" MaxValue="150" MinValue="10"> <im:GcNumber.ControlValidatorSet> <im:ControlValidatorSet> <im:RangeValidator ErrorContent="入力値は 10~150 の間でなければなりません。" ValueProcessAction="Keep" /> </im:ControlValidatorSet> </im:GcNumber.ControlValidatorSet> </im:GcNumber> <Button Content="Click Me!" /> </StackPanel>