我有一个奇怪的WPF / XAML问题。默认情况下,我希望扩展此TreeView中的所有节点。最终我将它绑定到我的视图模型,但是现在我只是希望它们都默认扩展。
这是相关代码的一部分(我目前正在使用)
<HierarchicalDataTemplate DataType="{x:Type Model:DirectoryItem}"
ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Path=Name}"
ToolTip="{Binding Path=Path}" />
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="True" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type Model:FileItem}">
<TextBlock Text="{Binding Path=Name}"
ToolTip="{Binding Path=Path}" />
</DataTemplate>
特别是我将setter属性设置为IsExpanded的部分。
正如您在下面的图片中看到的那样,此代码非常有用。如果我展开根节点,则默认情况下会扩展所有内容。
但是为什么根节点也没有默认扩展?我不知道为什么会这样做。
答案 0 :(得分:1)
它们未被扩展可能是因为您将样式添加到分层数据模板并且仅适用于儿童(但仅适用于理论)。
在DataTemplate中使用样式是一种代码味道 - 它是数据的模板,而不是可视化表示,因此它不应包含treeViewItem的样式(下次可能是其他的,也是分层的)。
我想你是这样做的:
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="TreeViewItem.IsExpanded" Value="True"/>
</Style>
</TreeView.ItemContainerStyle>