WPF ListBox - prise en UIElement au lieu de SelectedItem
J'ai créé un ListBox
qui a un DataTemplate
comme Itemtemplate
. Cependant, est-il un moyen facile d'accéder à l'généré UIElement
au lieu de la SelectedItem
dans le code-behind?
Quand j'ai accès SelectedItem
, je viens d'obtenir l'objet sélectionné à partir de mon
ItemsSource
collection. Est-il un moyen d'accéder à la UIElement
(ie. l'
élément généré à partir de la DataTemplate
avec l'objet lié)?
OriginalL'auteur Joachim Kerschbaumer | 2009-03-04
Vous devez vous connecter pour publier un commentaire.
Vous êtes à la recherche pour le ItemContainerGenerator de la propriété. Chaque
ItemsSource
a un ItemContainerGenerator instance. Cette classe a la méthode suivante qui pourrait vous intéresser: ContainerFromItem(instance de l'objet).Une fois que vous avez une poignée pour le
ListBoxItem
, vous pouvez aller de l'avant et de parcourir la logique et visuelle de l'arbre. Découvrez Arborescence Logique Helper et Arborescence Visuelle Helper.Comme Andy a dit dans les commentaires, juste parce que l'élément existe dans votre collection ne signifie pas un conteneur a été généré pour lui. Tout type de virtualisation de panneau scénario de soulever cette question; UIElements sera réutilisé dans les différents éléments. Soyez prudent avec ça.
Je suis en train d'écrire en c# et WPF et cette propriété n'apparaît pas sous contrôle ListBox.ItemsContainer Comment puis-je obtenir de l'instance pour cette listbox?
avez-vous une solution pour ma question? stackoverflow.com/questions/6148279/... (+250 bounty)
Juste pour référence, voici le code complet que j'ai obtenu de travail:
var container = ListBox.ItemContainerGenerator.ContainerFromItem(ListBox.SelectedItem) as FrameworkElement; if (container != null) container.Focus();
OriginalL'auteur Szymon Rozga
siz, Andy et Bodeaker sont absolument droit.
Ici est de savoir comment j'ai pu récupérer la zone de texte de la zone de liste de l'élément sélectionné à l'aide de sa poignée.
(Note: Ici, VisualTreeWalker est mon propre wrapper sur VisualTreeHelper avec diverses fonctions utiles exposés)
OriginalL'auteur vamosrafa