Mvvm-validations
MVVM –検証
この章では、検証について学習します。 また、WPFバインディングが既にサポートしているがMVVMコンポーネントに結び付けているもので検証を行うためのクリーンな方法も検討します。
MVVMでの検証
- アプリケーションがエンドユーザーからのデータ入力の受け入れを開始したら、その入力の検証を検討する必要があります。
- 全体的な要件に準拠していることを確認してください。
- WPFのバインディングシステムには、入力を検証するための優れたビルドと機能がいくつかありますが、MVVMを実行するときにこれらの機能をすべて活用できます。
- 検証をサポートし、どのプロパティに存在するルールを定義するロジックは、ビュー自体ではなく、モデルまたはViewModelの一部であることに注意してください。
あなたはまだWPFデータバインディングによってサポートされている検証を表現するすべての方法を使用することができます-
- プロパティでの例外のスローが設定されます。
- IDataErrorInfoインターフェイスを実装します。
- INotifyDataErrorInfoを実装します。
- WPF検証ルールを使用します。
一般に、INotifyDataErrorInfoが推奨され、WPF .net 4.5に導入され、プロパティに関連付けられたエラーのオブジェクトのクエリをサポートし、他のすべてのオプションのいくつかの欠陥も修正します。 具体的には、非同期検証を許可します。 プロパティに複数のエラーを関連付けることができます。
検証の追加
入力ビューに検証サポートを追加する例を見てみましょう。大規模なアプリケーションでは、おそらくこれをアプリケーションのいくつかの場所に必要とします。 ビュー、ViewModel、およびこれらのヘルパーオブジェクトには、モデルオブジェクトの周りにラッパーが存在する場合があります。
検証サポートを共通の基本クラスに配置して、さまざまなシナリオから継承できるようにすることをお勧めします。
基本クラスはINotifyDataErrorInfoをサポートするため、プロパティが変更されたときに検証がトリガーされます。
ValidatableBindableBaseという新しいクラスを作成します。 プロパティ変更処理の基本クラスが既にあるので、それから基本クラスを派生させ、INotifyDataErrorInfoインターフェイスも実装しましょう。
以下は、ValidateableBindableBaseクラスの実装です。
次に、それぞれのフォルダーにAddEditCustomerViewとAddEditCustomerViewModelを追加します。 以下は、AddEditCustomerView.xamlのコードです。
以下は、AddEditCustomerViewModelの実装です。
次に、SimpleEditableCustomerクラスの実装を示します。
上記のコードをコンパイルして実行すると、次のウィンドウが表示されます。
[顧客の追加]ボタンを押すと、次のビューが表示されます。 ユーザーがフィールドを空のままにすると、そのフィールドが強調表示され、保存ボタンが無効になります。