【问题标题】:Changing the message (or exception) in WPF ValidatesOnException binding在 WPF ValidatesOnException 绑定中更改消息(或异常)
【发布时间】:2009-07-14 18:30:04
【问题描述】:

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

文本框绑定到对象中的一个属性,例如:

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

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

我该怎么做?

【问题讨论】:

    标签: wpf validation


    【解决方案1】:

    不幸的是,该异常及其消息源自框架代码的深处,不能简单地换出。但是您可以做的一件事是通过编写自己的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 并让您的视图模型或模型通过IDataErrorInfo 对其进行验证,但这将是对现有代码的重大更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 2019-10-22
      • 2014-01-22
      • 2012-03-09
      • 2012-03-10
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      相关资源
      最近更新 更多