Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[WPF] Comment retrouver le parent d'un élément WPF ?

Avec WPF (Windows Presentation Foundation), un contrôle peut contenir de 1 à N autres contrôles.

Pour retrouver le parent d'un élément, vous pouvez appellé la propriété Parent:

TreeViewItem parent = (TreeViewItem)item.Parent;

Cependant, cette propriété ne vous retourne que le parent logique d'un élément. Si vous souhaitez retrouver le parent dans l'arbre des éléments (que l'on appelle le "Visual Tree"), il vous faudra passer par la classe VisualTreeHelper et sa méthode statique GetParent:

DependencyObject parent = VisualTreeHelper.GetParent(item);

Afin de vous simplifier la vie, j'ai écrit une petite méthode qui vous permet de retrouver, dans l'arbre des éléments, le premier parent correspondant au type que vous avez spécifié:

/// <summary>

/// Return the parent of an element according to the type specified.

/// </summary>

/// <typeparam name="T">The type of the parent element you want to find.</typeparam>

/// <param name="item">The element from which one you search for the parent.</param>

/// <returns>The parent, in the visual tree, of the element, according to the specified type.</returns>

private T FindParentOfType<T>(DependencyObject item) where T : DependencyObject

{

    DependencyObject parent = VisualTreeHelper.GetParent(item);

 

    do

    {

        parent = VisualTreeHelper.GetParent(parent) as DependencyObject;

    }

    while (parent.GetType() != typeof(T));

 

    return parent as T;

}

Si l'on prend le cas d'un Treeview composé de TreeviewItem imbriqué, on peut donc retrouvé le parent, de type TreeviewItem, de cette façon:

TreeViewItem item = this.tv.SelectedItem as TreeViewItem;

 

if (item != null)

{

    MessageBox.Show(FindParentOfType<TreeViewItem>(item).Header.ToString());

}

Plutôt sympa comme méthode, dans certains cas Wink

 

A+

 

PS: Il est vrai que dans le cas du Treeview, l'exemple est un peu mal choisi car on peut facilement avoir accès au parent de type TreeviewItem via la propriété Parent mais bon, c'est pour vous montrer le principe Wink

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mardi 18 décembre 2007 09:44 par Thomas LEBRUN
Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35

- MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par #Rui le 10-09-2008, 23:39

- SQL Server 2008 : Certifié - TS Admin (70-432) par SQL Server vu par Christian Robert le 10-09-2008, 10:58

- [WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par Thomas Lebrun le 10-09-2008, 10:49

- Hello World! par Hamid's Place le 10-08-2008, 23:38

- SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52