Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Découvrir Windows Presentation Foundation

Lier les nœoeuds enfants de la classe TreeView

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Enrichissez votre Data Template en un HierchicalDataTemplate. Ainsi, vous allez lier les deux enfants du TreeView.
08:16

Transcription

Je continue à enrichir mon code, par rapport à mon projet en ajoutant d'abord dans le répertoire Corpus Hermeticum, ici, toute une série de XML qui sont maintenant les requêtes que je vais lancer. Je vais donner un exemple. Il s'agit d'un XML, pour dire : « Je suis un hermeticus, voici mon nom, voilà mon niveau, est-ce que j'agis au niveau du serveur ou de la base, » pas très important pour note formation, mais c'était pour moi le fait de pouvoir lancer les requêtes, soit au niveau du serveur, soit dans chaque base de données. Et puis le Folder, dans lequel il doit se trouver inseré de mon TreeView. Ensuite toute la définition de la requête, ça, ce n'est pas très important pour nous non plus. Pour cela j'ai ajouté également un dossier CorpusManager avec le Manager qui va avoir des méthodes pour charger mes Hermeticas, donc chaque fichier. Je fais un GetFile de mon répertoire, je prends tous les xml, je les parcours les uns près les autres, je les ouvre etc. J'ai une méthode pour parser, en fait ça, c'est vraiment du code. Ce qui nous intéresse c'est que dans Main, maintenant là où je fais un PopulateFolder, j'ai rajouté juste ceci parce que mon Folder contenait déjà display et tooltip, vous vous souvenez, mais il doit également contenir une liste qui s'appelle Hermetica, de chaque requête définie dans mon XML. Donc une liste d'objet qui sont des objets qui contiennent maintenant plusieurs informations, notamment un LocalizedDisplay et un LocalizedTooltip pour dire voilà le Display et le Tooltip de la langue dans laquelle je me trouve. J'avais fait un dictionnaire de Display, un truc un peu compliqué, mais finalement je n'utilise que ça. Donc j'ai un Folder qui va contenir une liste d'hermetica, de requêtes à lancer avec un Nom, un Display et Tooltip. Ce que je fais ici, c'est que maintenant je prends mon Folder, mon instance, mes Hermetica, et avec un peu de linq je fais un AddRange, je récupère de ma liste chargée tous mes Hermetica, quand le FolderName est égal au nom actuel de mon Folder. Donc je charge en une seule ligne de linq ma collection dans chaque Folder. Il ne me reste plus qu'à l'utiliser parce que tout ça, c'est bien beau, mais dans mon XAML j'en suis toujours à mon ItemTemplate et je n'affiche pour l'instant que le Display et le Tooltip des Folders eux-mêmes. Il faut que je descende d'un niveau de ma hiérarchie parce que pour l'instant, ça ne va rien changer dans l'affichage, on est d'accord. Je vais, donc complexifier mon Template. Mon ItemTemplate ne va plus être un DataTemplate, mais ce qu'on appelle un HierarchicalDataTemplate. C'est un DataTemplate spécifique au TreeView, vous vous en doutez, pour être hiérarchique. Donc je change ça, je l'appelle HierarchicalDataTemplate et je vais dire quelle est la source des Items de ce DataTemplate. Je vais lui dire, donc ItemSource est égale à Extension Markup. Je vais lui dire... Je suis à quel niveau ? Réfléchissons bien, je suis dans Folders, ici, dans Mon TreeView, je vais faire un Template qui va apprendre une propriété de Folders, il se trouve que c'est Hermetica. Si on revient, juste encore une fois, ici pour bien comprendre, donc ma classe Folder, elle a une liste d'Hermeticus qui s'appelle Hermetica. C'est bien ce que je vais prendre ici, pour dire à l’intérieur qu'on va gérer nos Hermetica par Folder. Je vais garder au premier niveau mon TextBlock qui montre le parent, et puis je vais descendre pour ajouter HierarchicalDataTemplate, pour définir comment je vais afficher les enfants de chaque Folder. Donc, je fais un HierarchicalDataTemplate.ItemTemplate, pour dire comment je vais gérer chaque item. A l’intérieur de ce HierarchicalDataTemplate je vais refaire un DataTemplate. Oui, c'est un peu verbeux, mais ça a une certain logique, quand même. Ça va nous permettre de déclarer assez précisément tous nos objets. Donc je reprends un TextBlock, là j'enlève mon bold, mon texte ici... alors on y retourne encore une dernière fois, allez ! Mon Folder contient des Hermetica, chaque Hermeticus contient ici un LocalizedDisplay, je vais faire un copier-coller, et un LocalizedTooltip, et c'est ce que je veux ici. Il faut suivre la hiérarchie, je suis dans Folder, ensuite je suis dans Hermetica. Au niveau Folder je peux dire, je mets mon Display et mon Tooltip, ensuite je suis dans l'ItemTemplate de ceci : l'ItemSource est donc Hermetica. Donc dès que je suis dans l'ItemTemplate et dans mon DataTemplate, je suis au niveau de chaque Hemeticus. Et ici je peux mettre LocalizedDisplay, puis je vais le chercher là, ça va être plus pratique de faire un copier-coller, LocalizedTooltip, comme ceci. Ensuite ce que j'ai fait dans mon projet, c'est que j'ai rajouté aussi Tag, pour ajouter le Tag, pour prendre un Binding sur le Name de mon Hermeticus, de façon à le retrouver. J'ai, aussi, ajouté un Gestionnaire d'événements parce que maintenant ce que je veux, c'est, quand on clique sur chaque Item, ça lance l'affichage du HTML qui est lié, et ici j'avais mis un Gestionnaire d'événements sur MouseLeftButtonUp, peu importe, on ne va pas le faire ici, de façon à réagir au Click. On va voir ce que ça donne. OK ! Est-ce qu'il y a de la matière ? Très bien ! Un truc très rigolo, c'est que, vous vous souvenez, je bubbled les événements et j'ai un Gestionnaire d'événements au niveau Window. J'ai fait un Click, donc il l'a récupéré. Il faut que je m'en débarrasse, je vais le faire tout de suite. Vous voyez, déjà, que ça fonctionne correctement. Ils sont fermés par défaut, vous avez vu, tout est fermé. Si je voulais les ouvrir, je montre juste encore ça. Je vais ajouter dans mon TreeView, j'ai déjà mes Templates etc, mais je peux ajoute un Style, donc je vais faire ici, dans mon TreeView TreeView.ItemContainerStyle, donc je vais dire, voilà le style de mon Container d'Item. A l’intérieur je vais créer un Style, donc c'est pour vous montrer en fait un style in line, un style spécifique pour mon contrôle, mon style a un TargetType de TreeViewItem, c'est ça que je suis en train de manipuler, des TreeViewItem et mon Style va dire ici que je vais faire un Setter, vous vous souvenez, un Setter d'une propriété. La propriété, c'est TreeViewItem.IsExpanded. Alors, la IntelliSense m'a lâché mais ce n'est pas grave, et je vais mettre une valeur à True, ce qui veut dire que pour tous mes TreeViewItems qui seront, par exemple, les Folders de premier niveau, ils seront tous Expanded. Donc là j'ai mon Style, je dois avoir ici, il ne faut pas que je me trompe, voilà sur la casse, donc TreeViewItem, ah voilà c'est pour ça que je ne l'avais pas, IsExpanded, et c'est parti. Voilà tout est ouvert par défaut parce que je l'ai stylé sur chaque Item, tout est ouvert à tous les niveaux.

Découvrir Windows Presentation Foundation

Améliorez la qualité de vos interfaces graphiques avec WPF (Windows Presentation Foundation). Découvrez le langage XAML, définissez votre interface graphique manuellement, etc.

3h12 (40 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :12 mai 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !