Die „Antwort“ oben in meiner Sicht die eigentliche Frage nicht beantwortet, und in der Tat zeigt die ursprüngliche Frage, dass die Frage Autor bereits eine sehr effiziente Lösung für die hatte Problem. Die angegebene "Antwort" zeigt jedoch lediglich, wie ein Unterobjekt an ein TreeViewItem angehängt und anschließend mit einer benutzerdefinierten Methode gerendert wird. Obwohl dies nützlich ist, befasst sich diese Antwort nicht mit der tatsächlichen Natur der ursprünglichen Frage.
Es gibt viele Szenarios, in denen ein TreeViewItem ein externes Objekt haben muss, das nicht in die Liste Elemente des TreeViewItem gehört. Dies erleichtert den Zugriff auf das angefügte externe Objekt für anwendungsspezifische Zwecke, wenn der Benutzer das TreeViewItem aus der TreeView auswählt. Dieses Konzept unterscheidet sich grundlegend von der Idee, einem TreeViewItem Unterobjekte hinzuzufügen.
Eine alternative Methode zur Lösung dieses Problems im Gegensatz zu der ursprünglich vom Autor der Frage implementierten Lösung besteht darin, die TreeViewItem-Klasse von Unterklassen zu trennen und benutzerdefinierte Informationen wie ein angehängtes Objekt hinzuzufügen. Dieses Prinzip wird in dem Artikel http://msdn.microsoft.com/en-us/library/1330h6a4.aspx veranschaulicht. Nach dem Implementieren dieser benutzerdefinierten TreeViewItem-Unterklasse kann diese Unterklasse der Items-Liste von TreeView oder TreeViewItem hinzugefügt werden. Wenn der Benutzer das Element aus der Strukturansicht auswählt, wird das Objekt, das von der Auswahl zurückgegeben wird, die benutzerdefinierte Unterklasse sein, die alle benutzerdefinierten Informationen enthält, die die Unterklasse definiert hat.
Ein zusätzlicher Vorteil der Verwendung einer benutzerdefinierten TreeViewItem-Unterklasse anstelle von TreeViewItem besteht darin, dass benutzerdefinierte Verhaltensweisen von der Unterklasse implementiert werden können. Um zum Beispiel eine benutzerdefinierte Tooltip angezeigt wird, wenn der Benutzer die Maus über das Element schwebt, kann die Unterklasse für sich ein Quick-Info-Objekt-Set mit Code wie:
ToolTip tip = new ToolTip() { Content = "Tooltip display value" };
ToolTipService.SetToolTip(this, tip);
Danke für die Antwort. Wie implementiert man sozusagen ein "nested HierarchicalDataTemplate"? Zum Beispiel haben die Elemente in der ItemsSource-Bindung eine andere Liste in ihnen, und ich möchte, dass die Liste eine Unterliste von ihnen ist. –
np Dreas. Können Sie als Antwort markieren und eine separate Frage zu den verschachtelten HierarchicalDataTemplates stellen? –
Hallo Kent, werde ich tun. –