Expander.Header中的自定义ValidationRules绑定未触发

时间:2012-12-05 23:45:35

标签: c# wpf binding validationrules

当它与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!

1 个答案:

答案 0 :(得分:0)

请参阅msdn

  

绑定引擎每次将输入值(绑定目标属性值)传输到绑定源属性时,都会检查与绑定关联的每个ValidationRule。

因此,在您的情况下,您没有将inpurt值转移到source属性,因为您的Expander.header不是可用于输入值的控件。

编辑:但是ValidationRule中有一个名为ValidatesOnTargetUpdated的属性。将其设置为true时,将在更新目标属性时应用validationrule