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 :

ObservableCollection dans une ObservableCollection WPF C# [Débutant]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de viktor56
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut ObservableCollection dans une ObservableCollection WPF C#
    Bonjour,

    J’ai trouvé un script qui s’approche de ce que j’essaye de faire et celui-ci fonctionne comme il faut, le voici :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    using System;
    using System.Windows;
    using System.Collections.ObjectModel;
     
    namespace WpfCombo
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
     
                ObservableCollection<string> colors = new ObservableCollection<string>();
     
                colors.Add("white");
                colors.Add("yellow");
                colors.Add("red");
                colors.Add("blue");
                colors.Add("green");
     
                ObservableCollection<Voitures> voitures = new ObservableCollection<Voitures>();
     
                voitures.Add(new Voitures("Kia Rio", colors, "white"));
                voitures.Add(new Voitures("Kia Sportage", colors, "yellow"));
                voitures.Add(new Voitures("Kia Cee'd", colors, "red"));
                voitures.Add(new Voitures("Kia Optima", colors, "blue"));
                voitures.Add(new Voitures("Kia Picanto", colors, "green"));
     
                list.ItemsSource = voitures;
            }
        }
        public class Voitures
        {
            public Voitures(String name, ObservableCollection<string> colors, String selectedcolor)
            {
                Name = name;
                Colors = colors;
                SelectedColor = selectedcolor;
            }
     
            public String Name
            { get; set; }
     
            public String SelectedColor
            { get; set; }
     
            public ObservableCollection<String> Colors
            { get; set; }
        }
    }
    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
    35
    <Window x:Class="WpfCombo.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          Title="Combo inside Listbox" Height="470" Width="400">
        <Grid>
            <ListBox Name="list" Margin="5" HorizontalContentAlignment="Stretch">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Border Margin="3" CornerRadius="5" BorderBrush="Black" BorderThickness="2">
                            <StackPanel>
                                <TextBlock Margin="2" Text="{Binding Name}" Background="{Binding ElementName=cmbColors, Path=SelectedItem}"/>
                                <TextBlock Margin="2" Text="{Binding SelectedColor}" Background="{Binding ElementName=cmbColors, Path=SelectedItem}"/>
     
                                <ComboBox Margin="2" Name="cmbColors" ItemsSource="{Binding Colors}" SelectedValue="{Binding SelectedColor}"
                                          HorizontalContentAlignment="Stretch">
                                    <ComboBox.ItemTemplate>
                                        <DataTemplate>
                                            <Grid>
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition/>
                                                    <ColumnDefinition Width="2*"/>
                                                </Grid.ColumnDefinitions>
                                                <Rectangle Grid.Column="0" Margin="2, 1" Fill="{Binding}"/>
                                                <TextBlock Grid.Column="1" Margin="2, 1" Text="{Binding}"/>
                                            </Grid>
                                        </DataTemplate>
                                    </ComboBox.ItemTemplate>
                                </ComboBox>
                            </StackPanel>
                        </Border>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>
    </Window>
    Mais ce que je voudrais arriver à faire, c’est ajouter un ID à colors (parce que je travaille à partir de fichier XML).

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    using System;
    using System.Windows;
    using System.Collections.ObjectModel;
     
    namespace WpfCombo
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
     
                ObservableCollection<Colors> colors = new ObservableCollection<Colors>();
     
                colors.Add(new Colors(1, "white"));
                colors.Add(new Colors(2, "yellow"));
                colors.Add(new Colors(3, "red"));
                colors.Add(new Colors(4, "blue"));
                colors.Add(new Colors(5, "green"));
     
                ObservableCollection<Voitures> voitures = new ObservableCollection<Voitures>();
     
                voitures.Add(new Voitures("Kia Rio", colors, 1));
                voitures.Add(new Voitures("Kia Sportage", colors, 2));
                voitures.Add(new Voitures("Kia Cee'd", colors, 3));
                voitures.Add(new Voitures("Kia Optima", colors, 4));
                voitures.Add(new Voitures("Kia Picanto", colors, 5));
     
                list.ItemsSource = voitures;
            }
        }
     
        public class Voitures
        {
            public Voitures(string name, ObservableCollection<Colors> colors, int selectedcolor)
            {
                Name = name;
                ObservableCollection<Colors> Colors = colors;
                SelectedColor = selectedcolor;
            }
            public string Name { get; set; }
            public int SelectedColor { get; set; }     
        }
     
        public class Colors
        {
            public Colors(int idcolor, string nameColor)
            {
                IDColor = idcolor;
                NameColor = nameColor;
            }
            public int IDColor { get; set; }
            public string NameColor { get; set; }
        }
    }
    Je me doute qu'il doit y avoir quelques problèmes dans mon dernier code et j'aimerais donc, avoir le même résultat que dans le premier script.

    Merci d’avance à qui pourra m’aider à avancer sur ce problème.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pour pointer vers le nom de la couleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox ... SelectedValuePath="NameColor"
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <Rectangle Grid.Column="0" Margin="2, 1" Fill="{Binding NameColor}"/>
    <TextBlock Grid.Column="1" Margin="2, 1" Text="{Binding NameColor}"/>
    Pas sûr que ça suffise mais ça va dans la bonne direction.

  3. #3
    Membre averti Avatar de viktor56
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 32
    Par défaut
    Mon problème a été résolu sur un autre Forum, par Krimog.

    (Histoire de ne pas vous laisser essayer de résoudre ce problème une deuxième fois).


    Merci, Pragmateek. Effectivement, ça allait dans la bonne direction.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/09/2014, 19h06
  2. [MVVM] Recherche dans une ObservableCollection
    Par DotNET74 dans le forum Windows Phone
    Réponses: 11
    Dernier message: 11/04/2011, 13h08
  3. [Débutant] Exécuter un document Office dans une application WPF
    Par Bagoo dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 14/01/2009, 17h22
  4. tableau dans une fenêtre wpf
    Par modafine dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 01/08/2008, 16h15
  5. gestion des reporting dans une application wpf
    Par sanaaafkir dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 16/05/2008, 14h02

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