現在 Microsoft からのものはありませんが、明日 PRISM チームにこれを渡し、PRISM の次のリビジョン内で基本的なフォーム検証の例を取得できるかどうかを確認します。
そうは言っても、基本的に各フィールドを検証するフォームごとにバリデーターを配置し (セマンティックおよび/または構文検証)、すべて合格する必要があり、true/false 状態を返すことができます。
私が通常これを行う方法は、「CanSave」メソッドをコマンドにアタッチすることです。
SaveOrderCommand = new DelegateCommand<object>(this.Save, this.CanSave);
private bool CanSave(object arg)
{
return this.errors.Count == 0 && this.Quantity > 0;
}
次に、this.CanSaveで、このコードベース内に基本的な検証を配置するか、コンテキストに応じて他の多数のバリデーターを呼び出します。一部はすべてのモジュールで共有されます (つまり、IsEmailValid は、インフラストラクチャに配置する 1 つのバリデーターになります)。シングルトンとしてモジュールを作成し、文字列を渡すと、結果として true/false になります)。すべて合格したら、CanSave が true を返すことを確認します。失敗した場合、CanSave は False を返します。
それらが失敗し、失敗したことをユーザーにわかりやすいリマインダーとしてトリガーしたい場合、ここで使用できるテクニックがいくつかあります。私は通常、検証時に上記のコントロールに「失敗した」というフラグを立てました..悪いもの)。
現在、私は通常、上記のコントロール(赤いボックス、アイコンなど)を強調表示するだけでなく、ユーザーに何が必要かをより詳細に説明することにより、検証が行われているフォームでさらに多くのことを行うのが好きです-したがって、カスタムアプローチは解決策です私はを選択しました。
結局のところ、特定のフォームを検証するためにいくつかの面倒な作業を行う必要がありますが、妥当な場所でバリデーターを再利用する方法を検討してください (電子メール、SSN などは簡単に再利用できます)。使用する)。
HTH?
Scott Barnes - マイクロソフトのリッチ プラットフォーム プロダクト マネージャー。