[WPF]入力エラーメッセージをツールチップで表示すると例外が発生する

「INotifyDataErrorInfo」や「IDataErrorInfo」インターフェースとスタイルトリガー利用したエラーメッセージ表示で発生する例外の対処方法です。

エラーの例

入力エラーが解消された際に次のようなエラーが発生する場合があります。
System.Windows.Data Error: 17 : Cannot get 'Item[]' value (type 'ValidationError') from '(Validation.Errors)' (type 'ReadOnlyObservableCollection`1'). BindingExpression:Path=(0)[0].ErrorContent; DataItem='TextBox' (Name='textBox2'); target element is 'TextBox' (Name='textBox2'); target property is 'ToolTip' (type 'Object') ArgumentOutOfRangeException:'System.ArgumentOutOfRangeException: 指定された引数は、有効な値の範囲内にありません。
パラメーター名:index'

原因

エラーがないときはValidation.Errors配列が空になるため、バインディングで配列を参照していると例外が発生します。

対処方法

配列ではなく「CurrentItem.ErrorContent」を参照するようにします。

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

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

検証環境

関連ページ