Como defino ItemTemplate dinamicamente no WPF?
-
09-06-2019 - |
Pergunta
Usando o WPF, tenho um controle TreeView que desejo definir seu ItemTemplate dinamicamente por meio de código processual.Como eu faço isso?Presumo que preciso encontrar o recurso em algum lugar.
myTreeViewControl.ItemTemplate = ??
Solução
Se o modelo for definido diretamente na seção <Window.Resources>:
myTreeViewControl.ItemTemplate = this.Resources["SomeTemplate"] as DataTemplate;
Se estiver em algum lugar no fundo da sua janela, como em uma seção <Grid.Resources> ou algo assim, acho que funcionará:
myTreeViewControl.ItemTemplate = this.FindResource("SomeTemplate") as DataTemplate;
E se estiver em outro lugar do seu aplicativo, eu pensar App.FindResource("SomeTemplate") funcionará.
Outras dicas
se o seu controle de visualização em árvore exigir modelos diferentes para seus itens, você deverá implementar a classe DataTemplateSelector e definir sua instância para sua visualização em árvore.Pelo que me lembro, existe uma propriedade de DataTemplateSelector.