Come posso impostare ItemTemplate dinamicamente in WPF?
-
09-06-2019 - |
Domanda
Utilizzando WPF, ho un controllo TreeView di cui desidero impostare il relativo ItemTemplate in modo dinamico tramite codice procedurale.Come faccio a fare questo?Presumo di dover trovare la risorsa da qualche parte.
myTreeViewControl.ItemTemplate = ??
Soluzione
Se il modello è definito direttamente nella sezione <Window.Resources>:
myTreeViewControl.ItemTemplate = this.Resources["SomeTemplate"] as DataTemplate;
Se è da qualche parte nel profondo della tua finestra, come in una sezione <Grid.Resources> o qualcosa del genere, penso che funzionerà:
myTreeViewControl.ItemTemplate = this.FindResource("SomeTemplate") as DataTemplate;
E se è altrove nella tua domanda, I pensare App.FindResource("SomeTemplate") funzionerà.
Altri suggerimenti
se il tuo controllo di visualizzazione ad albero richiede modelli diversi per i tuoi elementi, dovresti implementare la classe DataTemplateSelector e impostare la sua istanza sulla visualizzazione ad albero.per quanto ricordo esiste una proprietà di DataTemplateSelector.