0

我正在开发一个 WPF 应用程序。我们在应用程序中有许多“表格”,其中包含需要输入的字段。我已经阅读了有关 ValidationRules 的所有内容,并且我认为我已经很好地掌握了这个概念,但是我想做的是构建一个 CustomControl,或者 UserControl,不确定在这种情况下哪个更合适,它将 ValidationRules 直接融入其中。

这种存在的最终结果而不是说

<ComboBox ItemsSource={Binding Items} />

我会说

<RequiredComboBox ItemsSource={Binding Items} />

我对 WPF 还有些陌生,想看看正确的扩展点在哪里。

4

1 回答 1

1

ValidationRule 属于 Binding。这就是为什么你必须在你的控件中指定你的绑定。如果那不是问题,您可以创建一个 UserControl,而不是从 ContentControl 继承,而是从 ComboBox 继承,并在 XAML 中执行以下操作:

<ComboBox blabla
          local:xmlns="clr-namespace:YourNameSpace">
<ComboBox.ItemsSource>
     <Binding Path="Items">
          <Binding.ValidationRules>
               <local:YourValidationRule/>
          </Binding.ValidationRules> 
     </Binding>
</ComboBox.ItemsSource>
</ComboBox>

您的另一个选择是创建自己的 Binding,它继承自Binding并在构造函数中设置其 ValidationRule,如下所示:

public class ValidatedBinding:Binding
{
    public ValidatedBinding()
    {
        this.ValidationRules.Add(new YourValidationRule());
        this.ValidatesOnDataErrors = true;
    }
}

如何使用它:

ItemsSource="{local:ValidatedBinding Path=Items}"/>
于 2013-05-01T12:51:05.097 回答