Wie lege ich ItemTemplate dynamisch in WPF fest?
-
09-06-2019 - |
Frage
Mit WPF habe ich ein TreeView-Steuerelement, dessen ItemTemplate ich dynamisch über prozeduralen Code festlegen möchte.Wie mache ich das?Ich gehe davon aus, dass ich die Ressource irgendwo finden muss.
myTreeViewControl.ItemTemplate = ??
Lösung
Wenn die Vorlage direkt in Ihrem Abschnitt <Window.Resources> definiert ist:
myTreeViewControl.ItemTemplate = this.Resources["SomeTemplate"] as DataTemplate;
Wenn es sich irgendwo tief in Ihrem Fenster befindet, etwa in einem Abschnitt <Grid.Resources> oder so, wird das meiner Meinung nach funktionieren:
myTreeViewControl.ItemTemplate = this.FindResource("SomeTemplate") as DataTemplate;
Und wenn es an anderer Stelle in Ihrer Bewerbung steht, ich denken App.FindResource("SomeTemplate") wird funktionieren.
Andere Tipps
Wenn Ihr Treeview-Steuerelement unterschiedliche Vorlagen für Ihre Elemente erfordert, sollten Sie die DataTemplateSelector-Klasse implementieren und deren Instanz auf Ihre Baumansicht festlegen.Soweit ich mich erinnere, gibt es eine Eigenschaft von DataTemplateSelector.