私は解決できないようですWPFでの検証に問題があります。私は同じようなので、プロパティを使用するクラス(つまり、IDataErrorInfoを実装)を持っています。WPFバインディングと検証
private double? _SizeSearchValue;
public double? SizeSearchValue
{
get { return _SizeSearchValue; }
set
{
_SizeSearchValue = value;
NotifyChange("SizeSearchValue");
ValidateInputRow("SizeSearchValue");
}
}
このようにXAMLのテキストボックスにバインドされます。プロパティのセッターで
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="Size:"/>
<ComboBox Text="{Binding SizeSearchOption, ValidatesOnDataErrors=True}"/>
<TextBox Text="{Binding SizeSearchValue, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=False}"/>
</StackPanel>
ValidateInputRow()関数が正常に通過し、私のカスタム検証ルーチンを実行するとのStackPanelでコンボボックスとテキストボックスが赤い枠を持っている以上の言及ようにエラーを適切に設定します。テキストボックス(例: "Abc")に数字以外の文字列を置くまでは、すべて正常に機能します。
文字列入力では、バインディングはデフォルトの検証を実行し、FormatExceptionが発生し、いつもこれで私の問題は私のクラスのプロパティのセッターが呼び出されることはありませんので、私のカスタム検証ルーチンが実行されることはありませんということです。
なぜこれが起こっているのか理解していますが、誰かがイベントをキャッチする方法を知っているのか、違反しているFormatExceptionが原因で私のカスタム検証が実行できるのでしょうか。私はこれを理解することができない。私は自分の質問に答えのようにOK