いくつかの階層情報を表示するために 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>
これは、4 列の素敵な TreeView として表示されます。追加で必要なのは、列名を表示する TreeView の上にあるヘッダーだけです。ヘッダー列の幅は TreeViewItems と同期する必要があり、ヘッダー スタイルもカスタマイズ可能にする必要があります。これを行う最も簡単な方法は何ですか?
PS私は近い2つの解決策を見つけました:
1)ここに TreeListView がありますが、これにはモデルにカスタム インターフェイス (ITreeModel) を実装する必要があります。また、このソリューションのアプローチは、ListView から開始し、RowExpander を手動で実装することです。私の場合、TreeView は必要なものに十分近いので、ヘッダーを簡単に配置できることを願っています。
2)ここに TreeListView 。これは確かに TreeView から始まりますが、ヘッダーをカスタマイズする方法がわかりません。generic.xaml の GridViewHeaderRowPresenter をカスタマイズする必要があると思いますが、この要素には独自の ControlTemplate がないようです。