当它与Expander.Header绑定相关联时,我无法触发自定义ValidationRule。事实上,我似乎唯一能够触发这些自定义规则的地方是DataGrid.RowValidationRules块......
扩展器在我的Window XAML文件中定义,如此;
<Expander Style="{StaticResource ValidatedSecondLevelExpanderStyle}">
<Expander.Header>
<Binding Path="Name" Mode="OneWay" ValidatesOnDataErrors="True" NotifyOnValidationError="True">
<Binding.ValidationRules>
<ValidationRules:BoundObjectIsValid />
</Binding.ValidationRules>
</Binding>
</Expander.Header>
</Expander>
正确显示绑定属性“名称”,但不会调用验证规则“BoundObjectIsValid”。这是可能的,如果是的话,我错过了什么?
我知道我可以在绑定对象上交替实现IDataErrorInfo,但是如果没有系统其他部分提供的某些上下文,对象就无法明智地验证自身。重构是可能的,但我希望首先使用ValidationRules!
答案 0 :(得分:0)
请参阅msdn。
绑定引擎每次将输入值(绑定目标属性值)传输到绑定源属性时,都会检查与绑定关联的每个ValidationRule。
因此,在您的情况下,您没有将inpurt值转移到source属性,因为您的Expander.header不是可用于输入值的控件。
编辑:但是ValidationRule中有一个名为ValidatesOnTargetUpdated的属性。将其设置为true时,将在更新目标属性时应用validationrule