Ich verwende die WPF-Strukturansicht, um einige hierarchische Informationen anzuzeigen. Jedes Element in der Strukturansicht besteht aus mehreren Attributen, so verwende ich ein Gitter in meinem HierarchicalDataTemplate diese Attribute anzuzeigen:Spaltenüberschrift für eine WPF-Strukturansicht
<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>
Dieser Parameter erscheint als eine schöne TreeView mit 4 Spalten - so weit, so gut! Die einzige zusätzliche Sache, die ich brauche, ist eine Kopfzeile über der TreeView, die Spaltennamen anzeigt. Die Header-Spaltenbreiten sollten mit TreeViewItems synchronisiert werden und auch die Header-Stile sollten anpassbar sein. Was ist der einfachste Weg, dies zu tun?
P.S. Ich fand zwei Lösungen, die in der Nähe kamen:
1) Eine TreeListView here, aber das erfordert, dass ich eine benutzerdefinierte Schnittstelle (ITreeModel) zu meinem Modell implementieren. Außerdem besteht der Ansatz in dieser Lösung darin, mit einem ListView zu beginnen und einen RowExpander manuell zu implementieren. In meinem Fall ist das TreeView ausreichend nah an dem, was ich brauche, also hoffe ich, dass es sehr einfach sein sollte, einen Header darauf zu setzen.
2) Ein TreeListView here. Dieser beginnt tatsächlich mit einem TreeView, aber ich kann nicht herausfinden, wie man den Header anpasst. Ich vermute, dass ich den GridViewHeaderRowPresenter in der generic.xaml anpassen muss, aber dieses Element scheint nicht sein eigenes ControlTemplate zu haben.