自定义处理无效字符输入

时间:2012-02-28 09:37:58

标签: c# .net wpf

这是场景。我在UI上有一个绑定到double属性的文本框。如果在文本框中输入了一个字符,例如“#”,则WPF验证对于应用程序来说是不够的。我需要显示自定义消息,并禁用代码中的一些控件。 (要禁用的这些控件不是xaml的一部分。)截至目前,我能想到的唯一方法是将文本框绑定到字符串属性并使用TryParse方法。但是,这将是一个巨大的不便。有没有办法获得输入无效字符的通知,而不必将属性更改为字符串类型?

2 个答案:

答案 0 :(得分:0)

我使用"字符串"我的viewmodel中的解决方案。最适合IDataErrorInfo和绑定。

但有时我也会为Textboxe使用InputMaskbehavior。因此用户只需输入为输入掩码定义的字符。

答案 1 :(得分:0)

如果您正在使用MVVM模式,那么您可能应该在ViewModel中具有字符串属性,因为这是在文本框中输入的内容。即使您需要模型的双精度,您的视图也会有一个字符串。然后,您可以对字符串属性执行所需的任何验证。类似的东西:

public string TextProperty
{
    get
    {
        return _textProperty;
    }
    set
    {
        if (_textProperty != value)
        {
            _doubleProperty = this.TransformAndValidateString(value);               
             _textProperty = value;
        }
    }
}

关于在出现错误时禁用控件,请在此处查看:

IDataErrorInfo