我正在使用WPF TreeView顯示一些分層信息。在TreeView每個項目包含多個屬性,所以我用我的HierarchicalDataTemplate內的網格顯示這些屬性:WPF TreeView的列標題
<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 [email protected]}" />
<TextBlock Grid.Column="1" Text="{Binding [email protected]}" />
<TextBlock Grid.Column="2" Text="{Binding [email protected]}" />
<TextBlock Grid.Column="3" Text="{Binding [email protected]}" />
</Grid>
</HierarchicalDataTemplate>
這顯示爲一個不錯的TreeView有4列 - 越遠越好!我需要的唯一附加功能是TreeView上方顯示列名稱的標題。標題列的寬度應該與TreeViewItems同步,並且標題樣式應該可以自定義。最簡單的方法是什麼?
P.S.我發現兩個解決方案已經接近:
1)TreeListView here,但這需要我爲我的模型實現自定義接口(ITreeModel)。此解決方案的方法是以ListView開始並手動實施RowExpander。在我的情況下,TreeView足夠接近我所需要的,所以我希望把標題放在它上面應該很簡單。
2)TreeListView here。這一個確實以TreeView開頭,但我無法弄清楚如何自定義標題。我懷疑我必須自定義generic.xaml中的GridViewHeaderRowPresenter,但是這個元素似乎沒有自己的ControlTemplate。