0

当自定义 ValidationRule 与 Expander.Header 绑定关联时,我无法触发它。事实上,我似乎可以让这些自定义规则触发的唯一地方是在 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 工作!

4

1 回答 1

0

请参阅msdn

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

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

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

于 2012-12-06T00:28:44.827 回答