Utiliser deux combobox
danny243
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour j'utilise deux combobox l'un pour stocker les années de debut et l'autre pour stocker les années de fin lorsque je selectionne une année de debut dans le premier combobox la valeur minimale du deuxième combobox doit commencer par l'année de debut que l'utilisateur a selectionné dans le premier combobox pouvez m'orienter svp merci
A voir également:
- Utiliser deux combobox
- Utiliser chromecast - Guide
- Deux ecran pc - Guide
- Utiliser iphone comme webcam - Guide
- Comment faire deux colonnes sur word - Guide
- Nombre de jours entre deux dates excel - Guide
2 réponses
Bonjour
dans le code behind de ton contrôle, tu vas ajouter 2 propriété AnneeDebut et AnneeFin, elles doivent être INotifyPropertyChanged.
La propriété SelectedItem des combobox sera bindée sur ces 2 propriétés.
Dans le code get de AnneeDebut, tu affecteras AnneeFin, si sa valeur est inférieure à la nouvelle valeur de AnneeDebut.
Dans le code get de AnneeFin, tu affecteras AnneeDebut, si sa valeur est supérieure à la nouvelle valeur de AnneeFin.
Tu peux même créer 2 collections d'années que tu réduits en fonction de la saisie.
dans le code behind de ton contrôle, tu vas ajouter 2 propriété AnneeDebut et AnneeFin, elles doivent être INotifyPropertyChanged.
La propriété SelectedItem des combobox sera bindée sur ces 2 propriétés.
Dans le code get de AnneeDebut, tu affecteras AnneeFin, si sa valeur est inférieure à la nouvelle valeur de AnneeDebut.
Dans le code get de AnneeFin, tu affecteras AnneeDebut, si sa valeur est supérieure à la nouvelle valeur de AnneeFin.
Tu peux même créer 2 collections d'années que tu réduits en fonction de la saisie.
Tu t'es compliqué la vie pour rien.
Voici un exemple autonome à adapter pour toi
Voici un exemple autonome à adapter pour toi
/// <summary> /// Pour l'exemple crée une liste d'annnées de 1900 à 2021 /// </summary> private List<int> toutesLesannees = Enumerable.Range(1900, 122).ToList(); private int anneeDebut = 0; /// <summary> /// Année de début à sélectionner /// </summary> public int AnneeDebut { get { return anneeDebut; } set { anneeDebut = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AnneeDebut")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AnneesFin"));//signale la réactualisation de la liste source du combo de fin } } private int anneeFin = 0; /// <summary> /// Année de fin à sélectionner /// </summary> public int AnneeFin { get { return anneeFin; } set { anneeFin = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AnneeFin")); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("AnneesDebut"));//signale la réactualisation de la liste source du combo de début } } /// <summary> /// Liste d'années pour le combo de début, qui dépend de la valeur de anneeFin /// </summary> public IEnumerable<int> AnneesDebut { get { return anneeFin == 0 ? toutesLesannees : toutesLesannees.Where(a => a < anneeFin); } } /// <summary> /// Liste d'années pour le combo de fin, qui dépend de la valeur de anneeDebut /// </summary> public IEnumerable<int> AnneesFin { get { return anneeDebut == 0 ? toutesLesannees : toutesLesannees.Where(a => a > anneeDebut); } } public event PropertyChangedEventHandler PropertyChanged;
<ComboBox ItemsSource="{Binding AnneesDebut}" SelectedItem="{Binding AnneeDebut}" HorizontalAlignment="Left" Height="21" Margin="99,275,0,0" VerticalAlignment="Top" Width="130"/> <ComboBox ItemsSource="{Binding AnneesFin}" SelectedItem="{Binding AnneeFin}" HorizontalAlignment="Left" Height="21" Margin="264,275,0,0" VerticalAlignment="Top" Width="128"/>
voila une partie du code