我有一個WPF驗證問題,我似乎無法解決。我有一個類(它實現了IDataErrorInfo),它使用了像-so這樣的屬性。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>
在屬性setter通常會經歷和運行我的自定義驗證程序,並適當設置錯誤,以便在StackPanel中的組合框和文本框上面提到的ValidateInputRow()函數有一個紅色的邊框。一切正常,直到我將一個非數字字符串放入文本框(例如,「Abc」)。
使用字符串輸入綁定運行其默認驗證,引發FormatException並且文本框獲取其紅色邊框通常。我的問題是,我的自定義驗證例程永遠不會運行,因爲我的類中的屬性setter從未被調用過。
我明白爲什麼會發生這種情況,但我想知道是否有人知道一種方法來捕獲一個事件,或有問題的FormatException,以便我可以在事實之後運行自定義驗證。我似乎無法弄清楚這一點。