WPF扩展器验证

时间:2011-02-08 18:03:33

标签: c# wpf validation xaml

如果在扩展器中保存的控件中发生IDataError验证,是否有人知道更改扩展器样式的方法。 E.g。

<Expander Header="Details">
    <TextBox Text="{Binding Brand.DESCRIPTION,
                            UpdateSourceTrigger=LostFocus,
                            ValidatesOnDataErrors=True}"/>
</Expander>

因此,如果文本框有错误,我的扩展器的样式将会改变(可能会变红)。 我希望尽可能使其成为通用的,以便在可能的情况下手动绑定到扩展器中的每个控件。

1 个答案:

答案 0 :(得分:2)

您可以通过附加行为使用附加事件Validation.Error(每次添加或删除验证错误时引发)。要完成这项工作,您需要将NotifyOnValidationError=True添加到绑定中。

此附加行为ChildValidation订阅了Validation.Error的{​​{1}}事件,如果Expander在绑定上设置为True,则该事件会冒泡。由于多个NotifyOnValidationError可能位于Control内,因此还需要跟踪当前处于活动状态的验证错误计数,以确定是否应显示红色边框。它可能看起来像这样

Xaml

Expander

ChildValidationBehavior

<Expander Header="Details"
            behaviors:ChildValidationBehavior.ChildValidation="True">
    <TextBox Text="{Binding Brand.DESCRIPTION,
                            UpdateSourceTrigger=LostFocus,
                            ValidatesOnDataErrors=True,
                            NotifyOnValidationError=True}"/>
</Expander>