我正在研究WPF应用程序。我们在应用程序中有许多“表单”,其中包含需要输入的字段。我已经阅读了有关ValidationRules的所有内容,我认为我正在充分理解这个概念,但我想要做的是构建一个CustomControl,或者UserControl不确定在这种情况下哪个更合适,将ValidationRules直接加入其中。
这样做的最终结果不是说
<ComboBox ItemsSource={Binding Items} />
我会说
<RequiredComboBox ItemsSource={Binding Items} />
对于WPF来说,我还是有点新手,看看正确的扩展点在哪里。
答案 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}"/>