Comment obtenir l'instance d'un élément basé sur un modèle à partir d'un ItemsControl lié aux données? (WPF)
-
19-08-2019 - |
Question
J'ai un <ItemsControl>
avec un personnalisé <DataTemplate>
(et aussi un personnalisé <ItemsPanelTemplate>
qui n'est qu'un WrapPanel
), lié via ItemsSource
à une simple collection observable de chaînes.
Le DataTemplate
consiste simplement en une instance d'une personnalisation UserControl
dont les propriétés sont liées à la chaîne via {Binding}
.
Le problème vient du fait que mes éléments de données ne sont que des chaînes. Je dois accéder directement aux instances de mon ContentPresenter
programme, mais je n'arrive pas à comprendre comment!
j'ai essayé:
var item = tagBar.Items[ tagBar.Items.Count - 1 ];
... mais cela ne fait que renvoyer la chaîne. Aussi:
var item2 = tagBar.ItemContainerGenerator.ContainerFromIndex( tagBar.Items.Count - 1 );
... renvoie un <=>, et je ne vois pas quoi faire du <=> pour accéder à l'instance de mon <=>.
??
Ceci est similaire à cette question , mais il n’a jamais été répondu correctement et s’appliquait également à Silverlight alors que c’est WPF.
La solution
La réponse que j'ai postée, ici , concerne la mise au point d'un élément. dans un DataTemplate, mais il devrait fournir le code dont vous avez besoin. Cela implique l'utilisation de la méthode FindName sur votre DataTemplate pour rechercher un contrôle dans celui-ci. Si vous donnez un nom à votre contrôle utilisateur, vous devriez avoir raison.