[WPF]「INotifyDataErrorInfo」インターフェースを利用したエラーチェックでエラーが戻らない

エラーが解消されてもエラー扱いされ、コントロールの枠が赤くなる場合の対処方法です。

原因

INotifyDataErrorInfoインターフェースのGetErrorsメソッドの戻り値でエラーメッセージのリストを返しますが、エラーがないときに空文字列を返すとエラーが解消されないケースがあります。 イベントの発生順や回数で挙動が変わるので原因が特定しづらいです。

対策

エラーがない場合、GetErrorsメソッドでnull(VBの場合Nothing)を返すようにします。

GetErrorsメソッドの実装パターンはいろいろありますが、次のサンプルではディクショナリ(_errorMessageDict)に、プロパティ名をキーとしてエラーメッセージが格納されています。

サンプルコードのダウンロード

サンプルコードの実行には Microsoft Visual Studio 2015 以上のバージョンが必要です。

検証環境

関連ページ