TreeListView






4.85/5 (22投票s)
带有多列的 TreeView

引言
此控件旨在以 TreeView
的形式显示分层数据,同时提供为每个项目附加额外信息的能力。
背景
我需要以分层结构呈现数据,但要求为每个项目显示额外信息。 最初,我将所有这些信息附加到 TreeNodeItem
的文本中,这对于用户来说相当不清楚。
Using the Code
要在您自己的应用程序中使用多列 TreeView
,请在任何窗口或控件中声明该控件。 TreeListView
暴露了 ListView
的所有属性,以及 AllowsColumnReorder
和 Columns
。
<local:TreeListView AllowsColumnReorder="True">
<local:TreeListView.Columns>
...
</local:TreeListView.Columns>
...
</local:TreeListView>
这两个属性与 GridView
的 AllowsColumnReorder
和 Columns
属性相关联,后者记录在 此处。
分层数据模板
为了让树能够检索子节点,您必须声明一个 HierarchicalDataTemplate
或一个 DataTemplateSelector
。
TreeListView
仅将使用 HierarchicalDataTemplate
或 DataTemplateSelector
的 ItemsSource
属性,因为所有信息都以相同的方式可视化(以行的方式)。 因此,以下声明就足够了
<local:TreeListView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}"/>
</local:TreeListView.ItemTemplate>
Columns
声明至少一列至关重要,TreeListView
将使用该列来可视化数据。 MSDN 提供了关于声明 GridViewColumn
的足够信息,因此我将不再赘述。
声明 GridViewColumn
的唯一新之处在于,至少一列必须包含一个 TreeListViewExpander
,它是一个可以展开其行并缩进其列中所有内容的 ToggleButton
。
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<!--The Expander Button (can be used in any column
(typically the first one))-->
<local:TreeListViewExpander/>
<!--The data to display in this column-->
<TextBlock Text="{Binding}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
就是这样!
关注点
实现 GridView
的所有功能可能是一个好主意。 不幸的是,我现在没有时间这样做。
历史
- 2008 年 4 月 6 日
- 首次发布
- 修复了文件下载