在WPF ValidatesOnException绑定中更改消息(或异常)
我有一个使用MVVM的WPF应用程序。 我正在使用绑定到POCO对象 文本框绑定到对象中的属性,如:在WPF ValidatesOnException绑定中更改消息(或异常),wpf,validation,Wpf,Validation,我有一个使用MVVM的WPF应用程序。 我正在使用绑定到POCO对象 文本框绑定到对象中的属性,如: <TextBox.Text> <Binding Path="CertainProperty" Mode="TwoWay" > <Binding.ValidationRules> <ExceptionValidati
<TextBox.Text>
<Binding Path="CertainProperty" Mode="TwoWay" >
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
现在这个属性是一个int属性,当用户试图输入一个非数值时,他们得到“输入字符串格式不正确”。
我需要做的是将此消息自定义为更用户友好的消息
我怎样才能做到这一点呢?不幸的是,该异常及其消息起源于框架代码的深处,不能简单地交换出去。但您可以做的一件事是通过编写自己的
验证规则
来完全绕过异常。例如:
public class Int32ValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (string.IsNullOrEmpty((string)value))
return ValidationResult.ValidResult;
int number;
return int.TryParse(value.ToString(), out number)
? ValidationResult.ValidResult
: new ValidationResult(false, "Please enter a valid integer");
}
}
当然,核心选项是将CertainProperty
转换为字符串
,并让您的viewmodel或模型通过IDataErrorInfo
对其进行验证,但这将是对现有代码的重大更改