如何平化WPF树视图
本文关键字:视图 WPF 何平 | 更新日期: 2023-09-27 18:09:38
我需要一个行为像树视图的控件(绑定到树结构,根据绑定对象的IsExpanded属性展开子节点),但显示数据像网格(没有缩进,或切换图像)。
展开折叠将根据绑定对象自动发生。
TreeView是完美的,我只需要删除缩进和三角形图像,使其垂直平坦,像一个网格列。
我想我可以尝试重写TreeViewItem模板,但这只是不显示任何东西。
基于MSDN上的TreeView
样式,应该这样做:
<Style TargetType="TreeViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<StackPanel>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ExpansionStates">
<VisualState x:Name="Expanded">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetProperty="(UIElement.Visibility)"
Storyboard.TargetName="ItemsHost">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Collapsed" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter ContentSource="Header" />
<ItemsPresenter Name="ItemsHost" Visibility="Collapsed" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
你需要一个TreeListView(它结合了TreeView
和ListView
在TreeViewItem模板级漂亮)