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 :

Binder à un ObservableCollection située dans un Dictionary


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut Binder à un ObservableCollection située dans un Dictionary
    Hello,

    j'ai ma classe Data de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class RondierData : INotifyPropertyChanged
    {
        public Dictionary<int, ObservableCollection<Ronde>> Rondes {get; set;}
        public ObservableCollection<Ronde> CurrentEditRonde {get; set;}
     
        //...
    }
    et dans le XAML une combobox pour lister les clés de mon dico de rondes, et un listView présentant l'ObservableCollection associée à l'élément. Mais je ne parviens pas à écrire le binding pour refléter la sélection d'un item dans la Combobox et l'affecter

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     <ComboBox HorizontalAlignment="Left" MinWidth="100" Name="cbRonde"  ItemsSource="{Binding Rondes}" SelectedItem="{Binding  Path=CurrentEditRonde, Mode=TwoWay}">
           <ComboBox.ItemTemplate>
                  <DataTemplate>
                          <TextBlock Text="{Binding Key, StringFormat='Ronde {0}'}" />
                  </DataTemplate>
           </ComboBox.ItemTemplate>
    </ComboBox>
     
    <ListView DockPanel.Dock="Bottom" Name="listEtapesRonde" ItemsSource="{Binding CurrentEditRonde, Converter={StaticResource ExistingRondeFilter}}">
           <ListView.View>
                  ...
           </ListView.View>
     </ListView>

    Parenthèse : Au début je n'avais que le dico, pas la propriété CurrentEditRonde, et la listView était bindé en direct sur cbRonde.SelectedItem.Value, mais j'avais un souci pour notifier que la collection avait changée alors qu'elle était dans le dico, d'où l'idée de référencer la Collection en cours d'édition dans une nouvelle propriété.

    Je pourrais procéder en code-behind, mais autant que possible je voudrais savoir si cette problématique peut être solvée en XAML et si oui comment.

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 52
    Par défaut
    Bonjour,

    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
     
      public Dictionary<int, ObservableCollection<Ronde>> Rondes { get; set; }
            private KeyValuePair<int, ObservableCollection<Ronde>> currentEditRonde { get; set; }
            public KeyValuePair<int, ObservableCollection<Ronde>> CurrentEditRonde
            {
                get
                {
                    return currentEditRonde;
     
                }
                set
                {
     
                    if (value.Equals(currentEditRonde)) return;
     
                    currentEditRonde = value;
                    if (PropertyChanged != null)
                    {
                        PropertyChanged(this, new PropertyChangedEventArgs("CurrentEditRonde"));
                    }
                }
            }
    Et pour le XAML :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <ComboBox HorizontalAlignment="Left" MinWidth="100" Name="cbRonde"  ItemsSource="{Binding Rondes}" SelectedItem="{Binding  CurrentEditRonde}">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Key, StringFormat='Ronde {0}'}" />
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
     
            <ListView DockPanel.Dock="Bottom" Name="listEtapesRonde" ItemsSource="{Binding CurrentEditRonde.Value}" Grid.Row="1">
                <ListView.View>
    ...

    PS c'est quoi la balise BB pour le code en xml ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Merci, je vais tester ca dans la journée.

    pour afficher en xml :
    [CODE="xml"]...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Ca fonctionne sans souci, merci

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

Discussions similaires

  1. Lire un fichier situé dans 2 sous dossier...
    Par Pleymo dans le forum Langage
    Réponses: 10
    Dernier message: 08/12/2005, 09h30
  2. Comment parcourir les dossiers situé dans le client
    Par etarip dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/11/2005, 10h16
  3. [MFC]Recuperation de variable situé dans un thread
    Par dreamkiller dans le forum MFC
    Réponses: 26
    Dernier message: 05/04/2005, 15h26
  4. Réponses: 2
    Dernier message: 23/11/2003, 18h44

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