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 :

Deux combobox dans un window


Sujet :

Windows Presentation Foundation

  1. #1
    Membre actif
    Deux combobox dans un window
    Bonjour à tous.

    Dans un projet WPF, j'ai deux combobox dans un fichier xaml.

    Code XAML :Sélectionner tout -Visualiser dans une fenêtre à part
    <ComboBox  x:Name="cmbEleve" IsEditable="True"  SelectionChanged="cmbEleve_SelectionChanged" ItemsSource="{Binding}" SelectedValuePath="ID" DisplayMemberPath="NOM_ELEVE"  Grid.Column="1" Padding="2" Margin="0 5"/>


    et

    Code XAML :Sélectionner tout -Visualiser dans une fenêtre à part
     <ComboBox  x:Name="cmbImputation" IsEditable="True" SelectionChanged="cmbImputation_SelectionChanged" ItemsSource="{Binding}" SelectedValuePath="ID" DisplayMemberPath="NOM_IMPUTATION"  Grid.Column="2" Padding="2" Margin="0 5"/>


    et voici le code

    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
    56
    57
    58
    59
    60
    namespace WpfApp1.Frais
    {
        /// <summary>
        /// Interaction logic for FraisScolaires.xaml
        /// </summary>
        public partial class FraisScolaires : Window
        {
            public FraisScolaires()
            {
                InitializeComponent();
                bindEleve();
                bindImputation();
     
            }
     
            /// <summary>
            /// Avec Entity Framwork
            /// </summary>
            A001Entities em = new A001Entities();
     
            /// <summary>
            /// Liste des élèves
            /// </summary>
            public List<ELEVE> El { get; set; }
     
     
     
            private void bindEleve()
            {
                ///throw new NotImplementedException();
                var Elitem = em.ELEVE.ToList();
                El = Elitem;
                DataContext = El;
     
            }
     
            /// <summary>
            /// Liste des imputations
            /// </summary>
            public List<IMPUTATION> Imp { get; set; }
            private void bindImputation()
            {
                ///throw new NotImplementedException();
                var item = em.IMPUTATION.ToList();
                Imp = item;
                DataContext = Imp;
            }
     
     
            private void cmbEleve_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                var Elitem = cmbEleve.SelectedItem as ELEVE;
            }
     
            private void cmbImputation_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                var item = cmbImputation.SelectedItem as IMPUTATION;
            }
        }
    }


    Voici le problème.

    J'ai d'abord testé le cmbEleve et il a fonctionné mais lorsque j'ai ajouté le cmbImputation, ce dernier fonctionne bien mais la liste des élèves reste vide.

    Je ne peux faire fonctionner qu'un seul combobox sur les deux.

    Pouvez-vous m'aider à les faire fonctionner en même temps.

    D'avance merci.

  2. #2
    Membre habitué
    Bonjour,

    Tu ne peux pas utiliser le DataContext pour tes 2 collections.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     private void bindEleve()
    {
        ...
        DataContext = El;
    }

    et
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void bindImputation()
    {
        ....
       DataContext = Imp;
    }

    et

    Il faut que tu implémentes INotifyPropertyChanged et que tu utilises les méthodes créées de l'interface dans les propriétés El et Imp.
    Ne pas oublié dans ton constructeur (par exemple) que le DataContext soit "lui-même"
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    DataContext = this;


    et que tes combo soient bindées sur les propriétés El et Imp.
    Code XAML :Sélectionner tout -Visualiser dans une fenêtre à part
    <ComboBox  x:Name="cmbEleve" ItemsSource="{Binding Path=El}" ...


    Si t'as des questions, n'hésite pas.

    Bonne journée.
    "La Bretagne, ça vous gagne !!!"

###raw>template_hook.ano_emploi###