WPF/MVVM でのデータ検証への満足のいくアプローチを見つけるのに苦労しています。私は使用してきましたがIDataErrorInfo
、テキストボックスを(たとえば)プロパティにバインドし、int
数値以外の値を入力すると、WPF は独自の検証メッセージを生成します(「値 'xyz' を変換できませんでした」)。コントロールはエラーとして強調表示されますが、バインディング (したがって IDataErrorInfo 検証) が発生しなかったため、viewmodel はプロパティが無効な状態であることを認識していません。
カスタムバリデーターについてはまだ調べていません。これらを使用して、ビューモデルにエラーがあることを通知できますか? 複雑なアプリケーションが必要とする多くのルールのそれぞれに対してバリデータークラスを作成するのは過剰に思えるので、それらを使用するのは少し気が進まない. 入力が数値であることを保証する基本的なカスタム バリデータと、より複雑なものには IDataErrorInfo という 2 つのアプローチを組み合わせて使用することもできます。
また、IDataErrorInfo を使用して「関連する」プロパティを検証するのにも苦労しています。私のモデルには「最小」と「最大」のプロパティがあり、最小が最大よりも小さいことを確認したいとします。「最小」テキストボックスを最大より大きい値に変更すると、コントロールは無効として正しくマークされます。「最大」を「最小」より大きい値に変更すると、「最小」テキストボックスの検証状態がクリアされません (おそらく「最小」が変更されていないため、再度検証されないためです)。この状況に最適なアプローチは何ですか?
他の人がどのように WPF 検証に取り組んだか知りたいです。.Net 4.5 での WPF 検証の改善点はありますか?