2015-10-01 5 views
1

Я хотел бы установить MultiDataTrigger для TextBox, как показано в приведенном ниже коде.Как использовать свойство Grid.Row в качестве пути привязки данных для условия MultiDataTrigger?

Если свойство IsNormal, которое я определил в коде, является ложным, а TextBox находится во второй строке сетки, IsEnabled должен быть ложным.

Однако Условие относительно 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> 

ответ

2

Grid.Row это вложенное свойство, так что это должно быть так:

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

Используйте (OwnerClass.AttachedProperty), чтобы указать путь к AttachedProperty от OwnerClass.

+1

О, он отлично работает! Большое вам спасибо за ваш быстрый ответ. – user4134476