使用内置的ValidationRules构建自定义Combobox

时间:2013-05-01 12:11:24

标签: wpf validationrules

我正在研究WPF应用程序。我们在应用程序中有许多“表单”,其中包含需要输入的字段。我已经阅读了有关ValidationRules的所有内容,我认为我正在充分理解这个概念,但我想要做的是构建一个CustomControl,或者UserControl不确定在这种情况下哪个更合适,将ValidationRules直接加入其中。

这样做的最终结果不是说

<ComboBox ItemsSource={Binding Items} />

我会说

<RequiredComboBox ItemsSource={Binding Items} />

对于WPF来说,我还是有点新手,看看正确的扩展点在哪里。

1 个答案:

答案 0 :(得分: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}"/>