【问题标题】:Custom handling of invalid character inputs无效字符输入的自定义处理
【发布时间】:2012-02-28 23:05:19
【问题描述】:

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

【问题讨论】:

    标签: c# .net wpf


    【解决方案1】:

    我在我的视图模型中使用“字符串”解决方案。最适合 IDataErrorInfo 和绑定。

    但有时我也会为我的 Textboxe 使用 InputMaskbehavior。所以用户可以只输入为 inputmask 定义的字符。

    【讨论】:

      【解决方案2】:

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

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

      关于在出现错误时禁用控件,请看这里:

      IDataErrorInfo

      【讨论】:

      • 有没有办法在代码中发现输入了错误的值?类似于监听 IDataErrorInfo 引发的异常?附言对不起,如果问题太基本了。我是初学者。
      • IDataErrorInfo 不会引发异常。它提供了一种方法,如果验证失败,则返回带有错误消息的字符串。为什么这种方法对您不起作用?如果答案对你有帮助,记得点赞。
      猜你喜欢
      • 2020-01-12
      相关资源
      最近更新 更多