我有一个使用 MVVM 的 WPF 应用程序。 我正在使用绑定(bind)到 POCO 对象。

文本框绑定(bind)到对象中的属性,例如:

           <TextBox.Text> 
                <Binding Path="CertainProperty" Mode="TwoWay" > 
                    <Binding.ValidationRules> 
                        <ExceptionValidationRule/> 
                    </Binding.ValidationRules> 
                </Binding> 
            </TextBox.Text> 

现在这个属性是一个 int 属性,当用户试图输入一个非数字值时,他们会得到“输入字符串的格式不正确”。 我需要做的是将此消息自定义为对用户更友好的消息。

我该怎么做?

请您参考如下方法:

不幸的是,该异常及其消息源自框架代码的深处,无法简单地换出。但是您可以做的一件事是通过编写您自己的 ValidationRule 来完全规避异常。例如:

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 转换为 string 并让您的 View 模型或模型通过 IDataErrorInfo 验证它,但是将是对现有代码的重大更改。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!