问题
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>
回答1:
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
.
来源:https://stackoverflow.com/questions/32885623/how-can-i-use-grid-row-property-as-a-databinding-path-for-a-multidatatrigger-con