2012-02-28 51 views
1

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

回答

0

以及我在我的viewmodel中使用“字符串”解决方案。最适合于IDataErrorInfo和绑定。

但有时我也为我的文本框使用InputMaskbehavior。所以用户只需输入为输入掩码定义的字符即可。

0

如果您使用的是MVVM模式,那么您的ViewModel中可能应该有一个字符串属性,因为这是在Textbox上输入的内容。即使你需要模型的双倍,你的视图上也有一个字符串。然后你可以在字符串属性上做任何你需要的验证。喜欢的东西:

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

关于时存在错误这里看看禁用控件:

IDataErrorInfo

+0

有没有办法找出代码中的一个错误值已进入?就像是在聆听IDataErrorInfo引发的异常一样? P.S.对不起,如果问题太基本。我是一名初学者。 – Tulip 2012-02-28 12:46:57

+0

IDataErrorInfo不会引发异常。它提供了一种方法,如果验证失败,它将返回一个带有错误消息的字符串。为什么这种方法不适合你?请记住,如果答案可以帮助你,请立即行动。 – 2012-02-28 15:33:21