2013-04-29 18 views
7

jednej konkretnej rzeczy o FindAncestor myli mnie, spójrz na poniższy przykład:WPF FindAncestor wiązania

<Expander.HeaderTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <Label Name="headerLabel" Content="Show Contents" Padding="0" VerticalAlignment="Center" /> 
      <Button Name="headerButton" Margin="6,0,0,0" Content="Button" Padding="6,1" /> 
     </StackPanel> 
     <DataTemplate.Triggers> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Expander}}, Path=IsExpanded}" Value="True"> 
       <Setter TargetName="headerLabel" Property="Content" Value="Hide Contents" /> 
      </DataTrigger> 
     </DataTemplate.Triggers> 
    </DataTemplate> 
</Expander.HeaderTemplate> 

używam XAML powyżej, aby zmienić tekst mojego niestandardowego nagłówka ekspandera. Moje pytanie brzmi, kiedy rzeczywiście muszę wyraźnie użyć FindAncestor, gdy chcę użyć właściwości przodka w moim powiązaniu? Ponieważ pojawiają się trzy następujące powiązania uzyskując ten sam wynik w moim scenariuszu co najmniej:

Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Expander}}, Path=IsExpanded}" 

Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Expander}}, Path=IsExpanded}" 

Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type Expander}}, Path=IsExpanded}" 

widziałem wiele przykładów wszystkich trzech, jest to tylko kwestia gustu?

Odpowiedz

Powiązane problemy