Bonjour,
Je débute un peu dans le WPF en .NET, et je connais plus le WindowsForms.
Mon problème est comment faire pour que 2 combobox qui possèdent le même ItemSource ne puissent pas sélectionner la même valeur.
Pour le contexte, je veux créer/modifier un objet "Transfert", qui correspond au transfert d'un montant entre deux objets "Compte". Cette édition se fait dans une modal (fenêtre). Il ne faut donc pas pouvoir sélectionner le même compte source et destinataire dans les 2 combobox.
L'ItemSource est un model avec une ObservableCollection d'objet "Compte". L'ItemSource est attribué aux 2 combobox dans le code C# lors du chargement de la fenêtre.
Voici le code XAML des deux combobox, si l'évènement SelectionChanged est utilisé c'est que j'ai d'autres traitements particulier à faire qui n'impactent pas la sélection d'un compte (destinataire ou source):
Pour information j'utilise Syncfusion, mais le fonctionnement des combobox est similaire, si il le faut je mettrai des combobox "standard" mais normalement les paramètres/évènements sont identiques.
Code XAML : 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 <Syncfusion:ComboBoxAdv x:Name="cbxCompteSource" Grid.Column="1" Grid.Row="4" Margin="5" SelectionChanged="cbxCompteSource_SelectionChanged" > <Syncfusion:ComboBoxAdv.ItemTemplate> <DataTemplate> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat=" {0} ({1} )"> <Binding Path="Libelle"/> <Binding Path="Solde"/> </MultiBinding> </TextBlock.Text> </TextBlock> </DataTemplate> </Syncfusion:ComboBoxAdv.ItemTemplate> </Syncfusion:ComboBoxAdv> <Syncfusion:ComboBoxAdv x:Name="cbxCompteDestinataire" Grid.Column="1" Grid.Row="5" Margin="5" SelectionChanged="cbxCompteDestinataire_SelectionChanged" > <Syncfusion:ComboBoxAdv.ItemTemplate> <DataTemplate> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat=" {0} ({1} )"> <Binding Path="Libelle"/> <Binding Path="Solde"/> </MultiBinding> </TextBlock.Text> </TextBlock> </DataTemplate> </Syncfusion:ComboBoxAdv.ItemTemplate> </Syncfusion:ComboBoxAdv>
Je mettrai le DataTemplate dans une ressource pour éviter la répétition du code plus tard.
Pour l'instant j'ai essayé Filter mais le problème c'est qu'à chaque changement il faut le changer et que la combobox désélectionne l'item.
Puis j'ai essayé de chercher avec MultiDataTrigger.Conditions mais j'ai du mal à comprendre, et si ça pourrait être une solution.
Merci pour votre aide.
Partager