gpt4 book ai didi

绑定(bind)中的 WPF FindAncestor

转载 作者:行者123 更新时间:2023-12-04 11:08:38 24 4
gpt4 key购买 nike

FindAncestor 的一件特别的事情让我很困惑,看看下面的例子:

<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>

我使用上面的 xaml 来更改我的自定义扩展器标题的文本。我的问题是,当我想在绑定(bind)中使用祖先的属性时,我什么时候真正需要显式使用 FindAncestor?因为至少在我的场景中,以下三个绑定(bind)似乎产生了相同的结果:
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}"

我看过很多这三个例子,这只是个人品味的问题吗?

最佳答案

来自 the MSDN page about the RelativeSource.Mode property :

If this property is not set explicitly, setting the AncestorType or the AncestorType and the AncestorLevel properties will implicitly lock this property value to FindAncestor.

关于绑定(bind)中的 WPF FindAncestor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16278284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com