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

Windows Presentation Foundation Discussion :

MVVM Treeview et SelectedNode ?!


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut MVVM Treeview et SelectedNode ?!
    Bonjour à tous,

    Je suis face à un soucis : j'ai une structure MVVM dans mon projet.
    Un de mes objets instancié est bindé à l'item source de mon treeview, je joue ensuite avec des HierarchicalTemplates pour afficher mon arbre, tout roule impec.
    Maintenant mon soucis est de retrouver le selectednode façon mvvm... Malheureusement je ne peux rien binder à mon treeview pour avoir mon selectednode dans mon viewmodel.

    Auriez vous une idée à tout hasard ?

    Merci d'avance
    @ bientot

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    As-tu regardé ce post de Josh Smith : http://www.codeproject.com/KB/WPF/Tr...ViewModel.aspx

    Il utilise le pattern MVVM. Tu peux voir comment il procède :

    Dans la classe TreeViewModel, a toi de mettre les propriété qui vont bien, soit une propriété IsSelected comme tu peux le voir dans l'article :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public bool IsSelected
    {
        get { return _isSelected; }
        set
        {
            if (value != _isSelected)
            {
                _isSelected = value;
                this.OnPropertyChanged("IsSelected");
            }
        }
    }

    et dans le style du TreeView binder cette propriété :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <Style TargetType="{x:Type TreeViewItem}">
          <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
     
        </Style>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut Binoo

    En fait, ce n'est pas tout à fait ce que je cherchais à faire car en passant par cette méthode, cela demande un travail de recuperation de l'élément sélectionné dans l'arbre de mon coté.
    En gros il aurait fallu que je détermine une fonction sur mon element de plus haut niveau qui irait chercher dans tous les children lequel est sélectionné puis le remonter.... Quelle galère !!!

    Ce que j'ai fait en attendant de trouver mieux : dans le code behind de mon usercontrol, je sette la property SelectedItem de mon viewmodel... Bouh pas beau je sais mais c'est ce qu'il y a de plus efficace pour le moment.

    Avec la méthode de Josh, aurais tu fait autrement pour connaitre l'élément sélectionné de ton treeview dans ton viewmodel ?

    Merci pour ta réponse

  4. #4
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Je comprends pas bien le problème... tu peux pas te binder au SelectedItem du TreeView ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Dans le xaml me binder au selecteditem ? si tu me dis comment, alors ok mais je ne vois pas ^^
    Sur mon treeview dans le xaml je n'ai pas de property "SelectedItem"

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Lorsque ta propriété IsSelected de ton viewmodel passe à true, tu mets à jour la propriété SelectedItem de ton viewmodel. Tu restes ainsi interne au viewModel.

    En gros, c'est dans le set du IsSelected qu'il faut mettre à jour ta propriété.

  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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    Dans le xaml me binder au selecteditem ? si tu me dis comment, alors ok mais je ne vois pas ^^
    Sur mon treeview dans le xaml je n'ai pas de property "SelectedItem"
    ah au temps pour moi, elle est en lecture seule

    +1 pour la suggestion de binoo donc...

Discussions similaires

  1. [Débutant] [MVVM] Treeview complexe
    Par Atchioum dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 08/09/2014, 15h24
  2. [WPF][C#] Problème de TreeView avec MVvM sans UserControl
    Par Manwë06 dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 05/10/2010, 13h23
  3. [Treeview/MVVM] arbre non rafrachit suis à modif de collection
    Par Yogy dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 26/09/2010, 00h50
  4. Treeview et selectednode
    Par pbatty1 dans le forum C#
    Réponses: 4
    Dernier message: 15/09/2010, 18h41
  5. Problème SelectedNode Control Treeview
    Par patbeautifulday1 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/07/2008, 12h37

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