【问题标题】:Implementing validation for all WPF TextBoxes为所有 WPF 文本框实现验证
【发布时间】:2019-03-13 10:38:08
【问题描述】:

我的程序有几十个文本框,它们都可以使用一个通用的验证规则。规则本身并不是很复杂:它只会阻止使用分号 (;)。

是否有任何方法来实现它(比手动将相同的规则应用于所有文本框更容易)?

编辑:我看不出它与How to use IDataErrorInfo.Error in a WPF program? 有什么关系 - 我将验证应用于文本框(或在工具提示中显示错误)没有问题。

【问题讨论】:

  • 您可以考虑不明确声明它们,而是将它们插入列表中。然后验证可以应用于整个列表。
  • 为此实现您自己的行为,只需 ibherit Behavior<TextBlock> class

标签: c# wpf


【解决方案1】:

您可以编写一个扩展 Binding 并添加 ValidationRule 的自定义标记扩展:

public class CustomBinding : Binding
{
    public CustomBinding(string path)
        : base(path)
    {
        this.ValidationRules.Add(new YourValidationRule())
    }
}

然后,当您在 XAML 中设置绑定时,您将使用这个而不是通常的 {Binding},例如:

<TextBox Text="{local:CustomBinding SourceProperty}" />

【讨论】:

  • @Alex:你试过这个吗?
  • 如果不对 TextBoxes 的 XAML 进行一些添加,似乎就不可能创建我所要求的内容。这看起来是最简单的解决方案,我会试一试。谢谢!
猜你喜欢
  • 2015-08-26
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多