是否可以使TreeView看起来像List?

时间:2012-01-26 10:14:06

标签: wpf treeview wpf-controls

我有一些需要显示为表格的分层数据,我可以更改TreeView的样式以类似List的方式显示数据吗?

所以代替:

+Group1
  SubItem1
  SubItem2
+Group2
 +Group
   SubItem11
   SubItem12

我想要这个:

Group1
SubItem1
SubItem2
Group2
Group
SubItem11
SubItem12

我的代码如下所示:

<TreeView ItemsSource="{Binding RootItems}"
                  dd:DragDrop.IsDragSource="True" dd:DragDrop.IsDropTarget="True">
            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <Setter Property="IsExpanded" Value="true" />
                </Style>
            </TreeView.ItemContainerStyle>

            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type vm:CategoryViewModel}" 
                                          ItemsSource="{Binding Children}">
                    <v:Category DataContext="{Binding}" />
                </HierarchicalDataTemplate>
                <DataTemplate DataType="{x:Type vm:ItemViewModel}">
                    <v:Item DataContext="{Binding}" />
                </DataTemplate>
            </TreeView.Resources>
        </TreeView>

我知道我应该可以使用TreeView的样式,但我不知道从哪里开始,我找不到这方面的任何信息。

注意:Can I have a Treeview without the tree structure?

的副本

2 个答案:

答案 0 :(得分:3)

覆盖TreeViewItem模板,例如

<TreeView.ItemContainerStyle>
    <Style TargetType="TreeViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TreeViewItem">
                    <StackPanel>
                        <ContentPresenter x:Name="PART_Header" ContentSource="Header"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                        <ItemsPresenter />
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</TreeView.ItemContainerStyle>

答案 1 :(得分:1)

您需要覆盖default template of treeview以展平您的层次结构。 这些链接可能符合您的目的 -

Can I have a Treeview without the tree structure?

http://social.msdn.microsoft.com/Forums/en/wpf/thread/a5ce0a21-d34b-4f9e-be03-ac4c56840ca5