У меня проблема с конвертером форматирования и проверкой данных.У меня есть следующее текстовое поле XAML объявление
<TextBox FontFamily="Segoe" FontSize="16" FontWeight="Medium"
TabIndex="{Binding TabBinding}" Foreground="Black"
Opacity="0.9" IsTabStop="True" Uid="{Binding PriceID}"
Text="{Binding NewPrice,Converter={StaticResource FormattingConverter},
ConverterParameter=' \{0:C\}', Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
Background="#FFE6DED3" BorderBrush="#FFE6DED3"
DataContext="{Binding StringFormat=\{0:c\}, NotifyOnValidationError=True}"
Padding="0" KeyDown="TextBox_KeyDown" AcceptsReturn="False">
</TextBox>
Проблема, с которой я столкнулся, - это проблема проверки данных.Когда пользователь вводит недопустимую цену (например, значение «abc» или «0.0.4»), текстовое поле пытается выполнить преобразование в методе «FormattingConverter».(Метод ConvertBack вставлен ниже) Это вызывает исключение и ошибки программы.Есть ли способ отложить вызов FormattingConverter или обойти его, если данные в текстовом поле неверны?
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var objTypeConverter = System.ComponentModel.TypeDescriptor.GetConverter(targetType);
object objReturnValue = null;
if (objTypeConverter.CanConvertFrom(value.GetType())) {
objReturnValue = objTypeConverter.ConvertFrom(value.ToString().Replace("$", ""));
}
return objReturnValue;
}
Спасибо,