如何平化WPF树视图

本文关键字:视图 WPF 何平 | 更新日期: 2023-09-27 18:09:38

我需要一个行为像树视图的控件(绑定到树结构,根据绑定对象的IsExpanded属性展开子节点),但显示数据像网格(没有缩进,或切换图像)。

展开折叠将根据绑定对象自动发生。

TreeView是完美的,我只需要删除缩进和三角形图像,使其垂直平坦,像一个网格列。

我想我可以尝试重写TreeViewItem模板,但这只是不显示任何东西。

如何平化WPF树视图

基于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(它结合了TreeViewListView在TreeViewItem模板级漂亮)

http://msdn.microsoft.com/en-us/library/ms771523.aspx