1

I'd like to set a MultiDataTrigger for a TextBox as shown in the code below.

If IsNormal property, which I defined in the code-behind, is false and the TextBox is in the 2nd row of a Grid, IsEnabled of it should be false.

However, the Condition regarding the Grid.Row does not work properly.

Could you tell me how it is possible to use a Grid.Row property as a binding path in this case?

<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>
user4134476
  • 385
  • 4
  • 22

1 Answers1

2

Grid.Row is an attached property, so it should be like this:

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

Use (OwnerClass.AttachedProperty) to indicate path to AttachedProperty of the OwnerClass.

Hopeless
  • 4,397
  • 5
  • 37
  • 64