2012-07-31 100 views
3

我有我自己的errorprovider,不想使用任何内置的WPF东西。我有一个绑定到整数的文本框,并且我有ValidatesOnExceptions = False和ValidatesOnDataErrors = False。但是当我在文本框中输入一个非整数时,我会看到一个红色边框。有什么我失踪?WPF ValidatesOnDataErrors =假不工作

回答

2

您有几种选择

  1. 你可以改变你的数据类型为字符串,以便将你的数据时,默认的转换器不会抛出异常。
  2. 您可以使用自定义值转换器,不会抛出异常,当你尝试哄一个字符串转换成整数

    class CustomConverter : IValueConverter 
    { 
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
        { 
         return value.ToString(); 
        } 
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
        { 
         int x = -1; 
         Int32.TryParse(value.ToString(), out x); 
         return x; 
        } 
    } 
    
  3. 您可以更改UpdateSourceTrigger以明确和有控制权正是时候数据绑定已更新。

  4. 您可以使用Expression Blend中编辑文本框模板的本地副本,并删除相关的绑定验证错误

+0

@ Justin984所有的东西。你有类似的事情发生在这里,这是因为你绑定到一个int:http://stackoverflow.com/questions/8435030/how-validatesonexceptions-works – 2012-07-31 16:28:08

+0

嗯,我希望有一种简单的方法来关闭红色边框,而无需编辑模板。感谢您确认我的怀疑。为了防止某人有一个聪明的解决方案,我会把这个开放一段时间,但我猜这将是答案。 – ConditionRacer 2012-07-31 16:38:10