改变 WPF 树视图方向的最糟糕的方法是什么。我想使用展开折叠功能从左到右而不是从上到下工作。即,当我单击树节点的展开按钮时,我会使其子节点出现在父节点的右侧,并且缩进应该自上而下地工作。此外,连接节点的垂直线现在必须是水平的。
bitbonk
问问题
7963 次
2 回答
8
这是Josh Smith 在 CodeProject 上的一篇很棒的文章,详细介绍了如何做这种事情。
于 2008-12-12T20:47:59.410 回答
2
要扩展John Smith 的 CodeProject 文章,如果您只想在树中的特定级别上进行水平布局(而不是像他的文章显示的那样在所有级别上),那么只需在您想要的级别ItemsPanel
上设置属性.TreeViewItem
StackPanel
一开始对我来说并不直观,但是你可以通过你想要水平的图层上方的图层的ItemContainerStyle
属性来获得这个属性。HierarchicalDataTemplate
像这样:
<ItemsPanelTemplate
x:Key="ItemsPanelForHorizontalItems">
<StackPanel
Orientation="Horizontal"/>
</ItemsPanelTemplate>
<HierarchicalDataTemplate
x:Key="DataTemplateForLayerAboveHorizontalItems"
DataType="{x:Type viewModel:ThingHavingHorizontalItems}"
ItemsSource="{Binding HorizontalItems}"
ItemTemplate="{StaticResource DataTemplateForLayerWithHorizontalItems}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style
TargetType="TreeViewItem">
<Setter
Property="ItemsPanel"
Value="{StaticResource ItemsPanelForHorizontalItems}"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<ContentControl
Content="{Binding}"
ContentTemplate="{StaticResource DataTemplateForThingHavingHorizontalItems}"/>
</HierarchicalDataTemplate>
按照此模式,您可以为树中的任何单个层设置水平布局,根层除外。如果您希望根层是水平的,那么只需将 上的ItemsPanel
属性设置TreeView
为使用水平StackPanel
。
于 2017-03-17T15:02:37.993 回答