Salut,
J'ai un TreeView dont les éléments ont été définis via une CollectionViewSource contenant des objets persos.
J'aimerai accéder au TreeViewItem parent de l'objet sélectionné.
Comment puis-je faire ?
Merci d'avance.
Salut,
J'ai un TreeView dont les éléments ont été définis via une CollectionViewSource contenant des objets persos.
J'aimerai accéder au TreeViewItem parent de l'objet sélectionné.
Comment puis-je faire ?
Merci d'avance.
Sur ton treeview, accède à l'ItemContainerGenerator et utilise la méthode ContainerFromInder: http://msdn.microsoft.com/en-us/libr...rfromitem.aspx
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Si je ne dis pas de bêtise, cette méthode permet de récupérer le TreeViewItem correspondant à un objet.
Moi j'aimerai pouvoir récupérer le TreeViewItem parent, autrement dit celui de niveau N-1 dans l'arborescence...
Exemple :
Quand je sélectionne le noeud Noeud1-1, j'aimerai pouvoir récupérer le noeud Noeud1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 +Noeud1 Noeud1-1 Noeud1-2 +Noeud2
Ben, tu utilises ma technique + sur le TreeviewItem récupéré, tu utilises la propriété Parent.
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Je me permets de revenir sur ce sujet que j'avais totalement zappé... :S
Alors, tout d'abord, je me suis rendu compte que la méthode ContainerFromItem d'un TreeView ne fonctionne QUE pour les noeuds de niveau 1.
Si on appelle cette méthode avec en paramètre un objet représenté par un noeud de niveau 2 (comme "Noeud1-1" dans mon exemple), cela renvoie null.
Pour pallier cela, j'ai récupérer les méthodes d'extension décrites ici.
Du coup, si j'appelle ceci :
où myNode11Object est l'objet représenté par le noeud "Noeud1-1", j'obtiens bien le TreeViewItem correspondant.
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part TreeViewItem myTvi = myTreeView.ContainerFromItem(myNode11Object) as TreeViewItem;
Par contre, si la propriété Parent de ce TreeViewItem me renvoie toujours null.
Es-tu sûr que la propriété Parent renvoie le TreeViewItem parent ?
PS : J'ai remarqué que la propriété ParentTreeViewItem (qui n'est malheureusement pas publique) me renvoie bien le TreeViewItem parent que j'attend...
Ah ben en fait, j'ai trouvé la solution sur ton blog
Chez moi, ta méthode renvoie bien le TreeViewItem parent, par contre la propriété Parent renvoie null, contrairement à ce que tu dis dans le post.
A voir donc...
Partager