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 :

TabItem dataBinding et MvVM


Sujet :

Silverlight

  1. #1
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut TabItem dataBinding et MvVM
    Bonjour,
    Je cherche a faire un binding en MVVM, cela fait deja 3 bonnes heures que je cherche a comprendre comment marche le control Tab et je suis completement bloqué.

    Voila, j'ai dans ma ViewModel des listes...
    Dans ma View un TabControl comprenant 3 TabItem et 1 ListeBox
    Je souhaite relier la ListBox avec le TabItem sélectionné.

    Quelqu'un s'y connait?

  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
    Bah sur le SelectedIndex de la listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectedIndex="{Binding Path=SelectedIndex, Mode=TwoWay, ElementName=tabControl1}"

  3. #3
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut
    Je n'ai pas vraiment essayer d'executer ton code, mais il me semble que cette ligne ferra en sorte que la ligne selectionnée dans le listBox serra la meme que le Item séléctionné.

    Moi je cherche en quelque sorte a filtré les éléments de ma liste.
    Par exemple:
    J'ai des produits: List<Products>
    Chaque objet de Products contient un champ CategoryID (MonProduit.CategoryID).

    Les TabItems sont reliés avec les Categories et la liste avec Products.
    Lorsqu'un TabItem est selectionné la liste contient uniquement les éléments où Products.CatégoryID == TabItem.

  4. #4
    Membre actif Avatar de freezer08
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut
    J'imagine que ton TabControl est bindé à une liste de Category ? Aussi, tu peux binder le TabControl.SelectedItem à une propriété de ton ViewModel, te permettant d'accéder à la catégorie sélectionnée (= tab sélectionné).

    Ensuite, à chaque modification de l'item, tu filtres la liste de ta ListBox. Tu peux même utiliser une PagedCollectionView, pour plus de simplicité.

    Ca donnerait quelque chose du genre :

    Code : 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
     
    public class MonViewModel 
    {     
            private int _selectedCatagory;
            public int SelectedCatagory
            {
                get { return _selectedCatagory; }
                set
                {
                    if (_selectedCatagory!= value)
                    {
                        _selectedCatagory= value;
                        RaisePropertyChanged("SelectedCatagory");
     
                        // Rafraichissement de la collection, avec appel au filtre
                        Products.Refresh();
                    }
                }
            }
     
            // Liste filtrée
            public PagedCollectionView Products { get; set; }
     
            // Liste d'origine des produits
            private List<Product> productsCache;
     
            public MonViewModel() 
            {
                // La PagedCollectionView encapsule la liste des produits
                Products = new PagedCollectionView(productsCache);
                // Définition du filtre
                Products.Filter = p => p.CategoryId == SelectedCatagory.CategoryId != null && SelectedCatagory.CategoryId;
            }
    }
    Je te laisse l'adapter à ton code

  5. #5
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut
    Merci beaucoup,
    J'ai juste encore un petit probleme, c'est que je ne trouve pas la PagedCollectionView. J'ai bien ajouté l'assembly System.Windows.data, mais pas de PagedCollectionView.
    As tu une idée?

  6. #6
    Membre éclairé
    Homme Profil pro
    Programmeur PHP
    Inscrit en
    Août 2009
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Israël

    Informations professionnelles :
    Activité : Programmeur PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 244
    Par défaut
    C'est bon, merci, je sais pourquoi.

    Ma ViewModel est dans un autre projet que ma vue.
    Ce projet (ou se trouve la ViewModel) est de type "Librairie de classe silverlight"
    et la bas, ce type n'existe pas dans system.windows.data.

  7. #7
    Membre actif Avatar de freezer08
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut
    Ah ok, tu me rassures La classe est un peu cachée, mais une fois la bonne dll référencée, il ne devrait pas y avoir de soucis !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Databinding et MVVM
    Par jagboys dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 11/11/2012, 14h38
  2. Databinding avec MVVM
    Par l.mnu dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 30/04/2011, 23h45
  3. Liaison de donnée à un Canvas via DataBinding et pattern MvvM
    Par satanasdiabolo dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 08/07/2009, 13h31
  4. MVVM ListView et DataBinding
    Par KoRiGaN44 dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 07/05/2009, 16h13

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