IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

[Silverlight] Treeview et Databinding


Sujet :

Silverlight

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Par défaut [Silverlight] Treeview et Databinding
    Bonjour,

    Voila mon soucis, j'ai un treeview crée a partir d'un fichier xml. Mais j'aimerai attribuer a chaque item et a chaque header un evenement. Mais je n'arrive pas a avoir acces aux items et header... J'utilise Expression Blend 3.
    Le code de mon Treeview est :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <controls:TreeView MouseLeave="retournormale" SelectedItemChanged="trvDatabase_SelectedItemChanged" x:Name="treeView_Copy" Height="194" Width="174" FontSize="6.667" Foreground="#FFFF2000" FontFamily="Verdana" FontWeight="Bold" RenderTransformOrigin="0.5,0.5" Canvas.Top="8" Canvas.Left="62" DataContext="{Binding Source={StaticResource test2SampleDataSource}}" ItemTemplate="{StaticResource headerTemplate12}" ItemsSource="{Binding headerCollection}"  />


    Et le code généré automatiquement en xml par Blend 3 est :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <!--
          *********    DO NOT MODIFY THIS FILE     *********
          This file is regenerated by a design tool. Making
          changes to this file can cause errors.
    -->
    <SampleData:root xmlns:SampleData="clr-namespace:Expression.Blend.SampleData.test2SampleDataSource" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
      <SampleData:root.headerCollection>
        <SampleData:header name="Storage">
          <SampleData:header.maRefTitreCollection>
            <SampleData:maRefTitre id="1" name="FDA/Optima" />
            <SampleData:maRefTitre id="2" name="EMC CLARiiON" />
            <SampleData:maRefTitre id="3" name="EMC DMX-4" />
            <SampleData:maRefTitre id="4" name="NetApp FAS" />
          </SampleData:header.maRefTitreCollection>
        </SampleData:header>
        <SampleData:header name="Servers">
          <SampleData:header.maRefTitreCollection>
            <SampleData:maRefTitre id="5" name="R481" />
            <SampleData:maRefTitre id="6" name="EMC CLARiiON" />
            <SampleData:maRefTitre id="7" name="EMC DMX-4" />
            <SampleData:maRefTitre id="8" name="NetApp FAS" />
          </SampleData:header.maRefTitreCollection>
        </SampleData:header>
        <SampleData:header name="CPU">
          <SampleData:header.maRefTitreCollection>
            <SampleData:maRefTitre id="9" name="R482" />
          </SampleData:header.maRefTitreCollection>
        </SampleData:header>
        <SampleData:header name="Switch">
          <SampleData:header.maRefTitreCollection>
            <SampleData:maRefTitre id="10" name="R483" />
          </SampleData:header.maRefTitreCollection>
        </SampleData:header>
      </SampleData:root.headerCollection>
    </SampleData:root>

    En espérant une réponse merci d'avance

    Valnours
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Elle dit quoi ta ressource headerTemplate12 ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    De quel évènement tu parles ? On va supposer que c'est Click, de toutes façons si c'est un autre le même principe marche aussi.
    Sur le TreeView, ajoute un handler pour l'évènement TreeViewItem.Click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TreeView ... TreeViewItem.Click="trvDatabase_TreeViewItemClick".../>
    L'évènement se déclenchera quand n'importe quel TreeViewItem du TreeView sera cliqué. Pour savoir quel TreeViewItem a déclenché l'évènement, utilise e.OriginalSource

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Par défaut
    Ma HeaderTemplate est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<common:HierarchicalDataTemplate x:Key="headerTemplate12" ItemsSource="{Binding maRefTitreCollection}">
    			<StackPanel>
    				<TextBlock Text="{Binding name}"/>
    			</StackPanel>
    		</common:HierarchicalDataTemplate>
    	</UserControl.Resources>
    Sinon l'evenement est SelectedItemChanged. Et j'aimerai ajouter le meme evenemtn a chacun mais chaque evenement appellerai une fonction différente.

    Merci de votre aide^^

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par valnours Voir le message
    Sinon l'evenement est SelectedItemChanged. Et j'aimerai ajouter le meme evenemtn a chacun mais chaque evenement appellerai une fonction différente.
    SelectedItemChanged se produit sur le TreeView, pas sur chaque élément. Dans le handler de l'évènement, tu peux appeler telle ou telle méthode selon l'élément sélectionné

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Par défaut
    SelectedItemChanged se produit sur le TreeView, pas sur chaque élément. Dans le handler de l'évènement, tu peux appeler telle ou telle méthode selon l'élément sélectionné
    Justement mon problème est la, je n'arrive pas à a différencier les Items. Etant donné que c'est une databinding, je n'arrive a récuperer que le header de mon fichier ou le RefTitre. Mais j'ai 4 headers différents qui quand on les selectionnent appelle une méthode différente. Et de même pour mes RefTitre. Mais je n'arrive pas a avoir acces à ces data car elles sont dans une autre page xaml (qui est généré automatiquement par Expression Blend).

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par valnours Voir le message
    Justement mon problème est la, je n'arrive pas à a différencier les Items. Etant donné que c'est une databinding, je n'arrive a récuperer que le header de mon fichier ou le RefTitre. Mais j'ai 4 headers différents qui quand on les selectionnent appelle une méthode différente. Et de même pour mes RefTitre. Mais je n'arrive pas a avoir acces à ces data car elles sont dans une autre page xaml (qui est généré automatiquement par Expression Blend).
    J'ai pas tout compris, mais si tu utilises le binding, pourquoi tu ne te bases pas sur l'objet de donnée pour savoir quelle méthode appeler ? La propriété SelectedItem renvoie l'objet de donnée, pas le TreeViewItem...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Par défaut
    Donc en gros, j'ai MainPage.Xaml qui a un TreeView. Les données de ce TreeView viennent d'un fichier xml. Expression blend transforme ce fichier xml en un fichier XAML SampleData.Xaml et en un fichier C# SampleData.CS.
    Ce que je veux c'est pour chaque header et chaque RefTitre du fichier xml, est que quand je clique sur un Item du TreeView une méthode est appellée. Mais le problème c'est que dans le fichier MainePage.cs je n'ai pas acces aux données de SampleData.xaml.(ou alors je ne sais pas comment les récuperer). J'utilise treeView_Copy.SelectedItem mais ca me retourne si c'est un header ou un RefTitre, mais pas le contenu de ce header ou de ce RefTitre.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 8
    Par défaut
    Re bonjour!
    J'ai regardé sur le net et je dois l'avouer je n'ai aps trouvé de reponse. Je vais revenir dessus plus tard mais pour le moment j'ai trouve une alternative qui est d'utiliser 2 listbox. Mais j'ai un autre problème. Donc je vous expose le problème qui me semble assez simple mais je ne suis pas très doué!

    J'ai deux listbox qui ont leur contenue venant de différentes SampleData from xml. La premiere listebox a 4 titre. Et ce que j'aimerai c'est que le contenue de ma 2eme listbox depende du Titre selectionné par la premiere listbox. Donc pour savoi quel titre est selectionné, j'utilise listbox1.SelectedIndex, qui me retourne l'index du titre selectionné. Mais je n'arrive pas a changer les données dans la 2eme listebox. Les données que j'aimerai mettre sont des données donc venant d'un fichier xml, qui sont dans Expression.Blend.SampleData.Servers (par exemple mais il y a servers, CPU et quelques autres).
    Donc j'essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listbox2.ItemSource=Expression.Blend.SampleData.Servers
    mais il y a une erreur qui est
    "Expression.Blend.SampleData.Servers est un espace de nom qui n'est pas le contexte donée.".
    Sinon j'ai egalement essayer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listbox2.ItemSource=Expression.Blend.SampleData.Servers.maRefTitre
    sachant que maRefTitre est le contenue que je veux afficher. Et dans ce cas on me dit
    "Expression.Blend.SampleData.Servers.maRefTitre est un type qui n'est pas dans le contexte donnée.".
    Donc comment faire? Je pense que en sois c'est assez simple mais je bloque dessus...

Discussions similaires

  1. [Débutant] comment retrouver ma valeur c1:silverlight.Treeview
    Par solaar dans le forum C#
    Réponses: 0
    Dernier message: 29/06/2013, 21h09
  2. [Débutant] TreeViewer & JFace DataBinding
    Par pingoui dans le forum Eclipse Platform
    Réponses: 27
    Dernier message: 16/08/2010, 17h07
  3. [DataBinding][XML] Explorer un fichier xml dans un Treeview
    Par FRED.G dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 06/03/2009, 16h47
  4. [WPF] Databinding et combinaison de Treeview et Listview
    Par Mythrandil dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 06/03/2009, 14h31
  5. TreeView en SilverLight ?
    Par Bono_BX dans le forum Silverlight
    Réponses: 1
    Dernier message: 01/07/2008, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo