あり、マイクロソフトからのいずれかが現時点ではありませんが、私たちは次の回転の内側に基本的なフォーム検証の例を得ることができるかどうかを確認するために明日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つのValidatorを配置し、文字列を渡します。結果)。それらがすべて合格したら、CanSaveが真を返すようにします。失敗した場合、CanSaveはFalseを返します。
ここで失敗した場合、失敗したことをユーザーに知らせるためにここで使用できるいくつかのテクニックがあります。私は典型的には、検証でのコントロールを「失敗」しているとフラグを立てました。(あなた自身の心を書きましたので、どのツールキットを使用すればいいのですか?http://www.codeplex.com/SilverlightValidatorは悪くありません)。
私は通常、上記のコントロール(赤いボックス、アイコンなど)をハイライト表示するだけでなく、ユーザーに必要なものをより詳細に説明することで、フォームの検証を行うFormsでより多くのことを行いたいと思います。私が選んだ解決策です。
最終的には、特定のフォームを検証するためにいくつかの重労働を取る必要がありますが、意味のある場所でバリデーターを再利用する方法を検討します(電子メール、SSNなどは簡単です再利用するもの)。
HTH?
Scott Barnes - Rich Platformsプロダクトマネージャー - Microsoft。