Nar*_*esh 9 wpf treeview columnheader
我使用WPF TreeView来显示一些分层信息.TreeView中的每个项目都包含多个属性,因此我在HierarchicalDataTemplate中使用Grid来显示这些属性:
<HierarchicalDataTemplate x:Key="ArtistTemplate"
ItemsSource="{Binding XPath=Title}"
ItemTemplate="{StaticResource TitleTemplate}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="NameColumn" />
<ColumnDefinition SharedSizeGroup="GenreColumn" />
<ColumnDefinition SharedSizeGroup="BornColumn" />
<ColumnDefinition SharedSizeGroup="DiedColumn" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding XPath=@Name}" />
<TextBlock Grid.Column="1" Text="{Binding XPath=@Genre}" />
<TextBlock Grid.Column="2" Text="{Binding XPath=@Born}" />
<TextBlock Grid.Column="3" Text="{Binding XPath=@Died}" />
</Grid>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
这显示为一个漂亮的TreeView有4列 - 到目前为止一切都很好!我需要的唯一额外的东西是TreeView上方的标题,显示列名称.标题列宽度应与TreeViewItems同步,标题样式也应该是可自定义的.最简单的方法是什么?
PS我找到了两个接近的解决方案:
1)这里有一个TreeListView ,但这需要我为我的模型实现一个自定义接口(ITreeModel).此解决方案中的方法是从ListView开始并手动实现RowExpander.在我的情况下,TreeView足够接近我需要的,所以我希望在它上面放一个标题应该非常简单.
2)这里有一个TreeListView .这个确实以TreeView开头,但我无法弄清楚如何自定义标头.我怀疑我必须在generic.xaml中自定义GridViewHeaderRowPresenter,但是这个元素似乎没有自己的ControlTemplate.
小智 0
您可以尝试重用 SharedSizeGroup 定义。例如,在 TreeView 上方放置另一个网格作为标题,并将它们放置在堆栈面板中,如下所示:
<StackPanel Grid.IsSharedSizeScope="True" Orientation="Vertical">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="NameColumn" />
<ColumnDefinition SharedSizeGroup="GenreColumn" />
<ColumnDefinition SharedSizeGroup="BornColumn" />
<ColumnDefinition SharedSizeGroup="DiedColumn" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Name"/>
<TextBlock Grid.Column="1" Text="Genre"/>
<TextBlock Grid.Column="2" Text="Born"/>
<TextBlock Grid.Column="3" Text="Dies"/>
</Grid>
<TreeView>
...
</TreeView>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
Grid.IsSharedSizeScope =True将重用您的标题和树的 SharedSizeGroups。
您还可以单独设置标题的样式。
| 归档时间: |
|
| 查看次数: |
10953 次 |
| 最近记录: |