gpt4 book ai didi

c# - 绑定(bind)到 "IsExpanded"不适用于 TreeView 中的根节点

转载 作者:行者123 更新时间:2023-11-30 15:28:37 26 4
gpt4 key购买 nike

我有一个 TreeView,它将在任意层次结构中显示几种不同的数据类型。为此,我为将在我的 TreeView 中显示的每个数据类型定义了特定的 HierarchicalDataTemplate:

<HierarchicalDataTemplate DataType="{x:Type local:MyFirstType}" ItemsSource="{Binding Children}" >
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsObjectExpanded, Mode=TwoWay}" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type local:MySecondType}" ItemsSource="{Binding Children}" >
...
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type local:MyThirdType}" ItemsSource="{Binding Children}" >
...
</HierarchicalDataTemplate>

每个 HierarchicalDataTemplate 的样式都略有不同(上面未显示),这就是我为每种类型定义不同的 HierarchicalDataTemplate 的原因。

但是,IsExpanded 绑定(bind)并未按我预期的方式工作。 TreeView 的根节点永远不会展开,无论源对象的 IsObjectExpanded 属性的值如何。子节点绑定(bind)按预期工作。

此外,如果我在根节点的 HierarchicalDataTemplate 定义中将 IsExpanded 属性硬编码为 True(假设我知道哪种类型将位于树的根),它的子节点显示展开而不是根节点本身。

我是否正确使用了 IsExpanded 属性?还是有另一种方法我应该设置 IsExpanded 属性以包含根节点?

最佳答案

HierarchicalDataTemplate.ItemContainerStyle 为您为其声明模板的项目的子级 设置样式。如果需要为根设置样式,可以使用TreeView.ItemContainerStyle

如果您觉得受此架构限制(这确实很愚蠢),您可以使用 HierarchicalDataTemplate.ItemContainerStyleSelector

关于c# - 绑定(bind)到 "IsExpanded"不适用于 TreeView 中的根节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25390334/

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