Ich habe ein TreeView
und ich versuche, einen Stil zu implementieren, der es mir erlaubt, einen Rahmen um alle Kinder eines bestimmten Knotens zu setzen, indem ich HierarchicalDataTemplate
verwende. Ein Beispiel von dem, was ich will, ist unten gezeigt:
Der folgende Code ist was ich bisher habe.
%Vor%Was muss ich hinzufügen, um meinen Rahmen so zu implementieren, wie ich es möchte?
Um eine Border
um die Sammlung von Kindern für eine TreeViewItem
zu rendern, müssen wir die Style
für ItemContainerStyle
der TreeView
TreeViewItem
Style
verwendet standardmäßig <ItemsPresenter x:Name="ItemsHost" />
, um den Inhalt der Kinder zu rendern.
Children's Content im Standard ItemContainerStyle
ist gegeben durch
Nun, um dies zu testen, hatte ich eine Collection mit einem Bool namens Type
und habe gerade versucht, ein Border
zu rendern, wenn dieses bool True war
Also habe ich die ItemsPresenter
auf
Was dann das folgende ergab
Sie müssen natürlich die oben genannten Bindungen aktualisieren, damit sie auf Ihren eigenen Fällen basieren, wenn Sie möchten, dass Border
gerendert wird.
In meinem Fall wurde meine Type
Variable für das Element mit "1.1" als Header-Inhalt auf True gesetzt.
Sieht so aus, als hätte das WPF-Team gedacht, dass niemand diese Funktionalität benötigt, also keinen Rahmen um ItemsPresenter
in TreeViewItem
template eingefügt haben. Daher müssen Sie TreeViewItem
template ändern und den Rahmen um% co_de hinzufügen %.
Sie können die Standarddefinition ItemsPresenter
style / template anzeigen, indem Sie WPF-Themes XAML-Wörterbücher herunterladen. Links werden bereitgestellt hier .
Hier ist ein vollständiges XAML einer funktionierenden Lösung:
%Vor%Hier ist, wie Knoten Klasse definiert ist:
%Vor%Tags und Links wpf treeview xaml hierarchicaldatatemplate