如何将Grid.Row属性用作MultiDataTrigger条件的数据绑定路径?

时间:2015-10-01 10:47:03

标签: c# wpf data-binding multidatatrigger

我想为TextBox设置一个MultiDataTrigger,如下面的代码所示。

如果我在代码隐藏中定义的IsNormal属性为false且TextBox位于Grid的第2行,则它的IsEnabled应为false。

但是,关于Grid.Row的条件无法正常工作。

你能告诉我在这种情况下如何使用Grid.Row属性作为绑定路径吗?

<Style TargetType="TextBox">
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=IsNormal}" 
                           Value="False"/>
                <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Grid.Row}"
                           Value="2"/>
            </MultiDataTrigger.Conditions>
            <Setter Property="IsEnabled" Value="False"/>
        </MultiDataTrigger>
    </Style.Triggers>
</Style>

1 个答案:

答案 0 :(得分:2)

Grid.Row是一个附加属性,所以它应该是这样的:

<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(Grid.Row)}"
                       Value="2"/>

使用(OwnerClass.AttachedProperty)表示AttachedProperty的{​​{1}}的路径。