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?
Nie mogę uwierzyć, że to przeoczyłem, dziękuję. – dbostream