J'ai des données ListBox
liées à la collection de ma classe PersonCollection
. Ensuite, j'ai défini un modèle de données pour les objets de type Person
, composé d'un DockPanel
qui contient un TextBlock
pour le nom d'une personne et un Button
pour supprimer la personne de la liste. Ça a l'air très bien tous ensemble.Problème avec l'arbre d'éléments WPF traversant
Le problème auquel je suis confronté est que je suis incapable d'atteindre l'élément sélectionné (et de le supprimer) dans la zone de liste lorsque je clique sur le bouton défini dans le modèle de données. Voici le gestionnaire du bouton:
private void RemovePersonButton_Click(object sender, RoutedEventArgs e)
{
Button clickedButton = (Button)e.Source;
DockPanel buttonPanel = (DockPanel)clickedButton.Parent;
Control control = (Control)button.Parent;
}
Le dernier objet créé control
est null
, à savoir que je ne peux pas progresser l'arborescence des éléments, je ne peux pas accéder à la liste et son SelectedItem
. Il est important de noter ici qu'il est impossible d'obtenir l'élément sélectionné dans la liste en l'appelant, car j'ai plusieurs listes dans la fenêtre et toutes ces listes implémentent le même modèle de données, c'est-à-dire partagent le même gestionnaire d'événements. supprimer le bouton.
J'apprécierais toute l'aide que je pourrais obtenir. Merci.
Correct! Très bien. Je n'étais pas au courant de la propriété 'DataContext'. Pour ce qui en vaut la peine, j'ai pu trouver mon chemin dans l'arborescence des éléments en appelant la méthode 'VisualTreeHelper.GetParent (DependencyObject reference)', mais c'est une bien meilleure solution! Je vous remercie. – Boris
Je préfère la première solution. Merci d'avoir posté! – Boris
@Boris: Bien sûr! Oui, la première version est mieux à coup sûr :) Ajouté le second parce que je n'étais pas sûr si vous aviez besoin de la ListBox correspondante pour quelque chose –