MESCIUS InputMan for WPF 3.0J
入力値の検証

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

検証項目の指定

数値コントロールでは、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 コードです。入力値が値範囲を超えたときは、入力値を保持します。

<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>
関連トピック

 

 


© MESCIUS inc. All rights reserved.