Можно ли сделать TreeView похожим на список? - PullRequest
0 голосов
/ 26 января 2012

У меня есть некоторые иерархические данные, которые нужно отобразить в виде таблицы. Могу ли я изменить стиль TreeView для отображения данных в виде списка?

так вместо:

+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, но я не знаю, с чего начать, и я не смог найти никакой информации в этом направлении.

ПРИМЕЧАНИЕ: копия Могу ли я иметь TreeView без древовидной структуры?

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Переопределить шаблон 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 голос
/ 26 января 2012

Вам нужно переопределить default template of treeview, чтобы выровнять вашу иерархию.Эти ссылки могут служить вашей цели -

Могу ли я иметь TreeView без древовидной структуры?

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

...