リサイズはクリックかドラッグ

入力値の検証

このトピックでは、コントロールの検証機能を使用した入力値の検証方法について解説します。

検証項目の指定

数値コントロールでは、ControlValidator クラスから派生した以下のクラスを使用して、入力された値の検証を行うことができます。

ControlValidatorSet プロパティが示す ControlValidatorSet オブジェクトに対して、RangeValidator のインスタンスを設定することにより、入力された値に対する検証が行われます。

メモ メモ

数値コントロールでは、InputTextValidator クラスによる検証はサポートされません。

検証が行われるタイミング

コントロールの ValidationTrigger プロパティを使用して検証が行われるタイミングを指定できます。コントロールに値が入力され、フォーカスが移動してから検証を行うには、ValidationTrigger プロパティに ValidationTrigger.LostFocus を設定します。フォーカス移動前ですべてのフィールドへ値が入力された時点で検証を行うには、ValidationTrigger.PropertyChanged を設定します。既定値は ValidationTrigger.LostFocus です。

RangeValidator による検証

RangeValidator クラスは、入力された値が、MaxValue プロパティおよび MinValue プロパティによって指定された値範囲内かどうかを検証します。このとき、ValueProcessAction プロパティを使用して、値範囲を超えた場合の動作を以下のいずれかから指定できます。

プロパティの値説明
ValueProcessAction.Keep何もしません。
ValueProcessAction.Clear入力値をクリアします。
ValueProcessAction.Restore入力前の値を復元します。
ValueProcessAction.AdjustToMinMax有効範囲内に収まるよう入力値を調整します。

入力中の値制御

フォーカス移動前に範囲外の入力値を ValueProcessAction プロパティの設定に従って値を自動調整するには、次のような設定が必要です。

サンプル

以下のサンプルコードは、10~150 の値範囲を設定し、コントロールがフォーカスを失ったタイミングで入力値の検証を行う XAML コードです。入力値が値範囲を超えたときは、入力値を保持します。

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>
参照