Utiliser deux combobox
Fermé
danny243
Messages postés
74
Date d'inscription
vendredi 19 mars 2021
Statut
Membre
Dernière intervention
16 octobre 2021
-
13 mai 2021 à 07:11
Utilisateur anonyme - 14 mai 2021 à 09:34
Utilisateur anonyme - 14 mai 2021 à 09:34
A voir également:
- Utiliser deux combobox
- Utiliser chromecast - Guide
- Deux ecran pc - Guide
- Comment utiliser l'ia - Accueil - Guide Intelligence artificielle
- Utiliser iphone comme webcam - Guide
- Deux comptes whatsapp - Guide
2 réponses
Utilisateur anonyme
13 mai 2021 à 08:51
13 mai 2021 à 08:51
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.
Utilisateur anonyme
14 mai 2021 à 09:34
14 mai 2021 à 09:34
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"/>
13 mai 2021 à 08:53
14 mai 2021 à 00:41
voila une partie du code
14 mai 2021 à 00:49
14 mai 2021 à 01:08