Bonjour tout le monde,
je débute en WPF et je ne maitrise pas encore très bien les subtilités du binding.
Voila le contexte:
j'ai 2 bases de données contenant des moyens de paiements, du genre:
1- Chèque
2- Espèces
3- CB
dans la première base
1- CB
2- Chèque
3- Espèce
dans la seconde
je souhaite que mon interface m'affiche une liste des moyens de paiement de la table A, et en face de chaque, une combobox des moyens de paiement de la liste B, afin que l'utilisateur fasse la correspondance entre les 2.
Pour le moment, voici mon code:
note: à priori l'accesseur set sur le nom est inutile, mais sans lui le reste me génère une erreur.
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 public class Payment { private int id; private string name; public string Name { get { return name; } set { name = value; } } public int Id { get { return id; } } public Payment(int idp, string namep) { this.id = idp; this.name = namep; } public class Payments : ObservableCollection<Payment> {} }
je récupère le contenu de mes 2 tables de moyens de paiement dans 2 liste listA et listB et j'effectue ceci:
puis la même chose en remplaçant tout les A par des B
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ObjectDataProvider odpPayA = this.FindResource("odpPayA ") as ObjectDataProvider; if (odpPayA != null) odpPayA .ObjectInstance = listA ;
et enfin voici mon code XAML:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <ObjectDataProvider x:Key="odpPayA" /> <ObjectDataProvider x:Key="odpPayB" />Avec ce code, j'obtient bien d'un coté la liste des moyens de paiement A, mais chaque ComboBox correspondante contient "NomDeMonNameSpace.Payment" à la place des moyens de paiement B, et quand je sélectionne un élément de la combobox, le texte du moyen de paiement A est remplacé par le texte de la combobox...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <ListBox x:Name="lbPaymentA" DataContext="{Binding Source={StaticResource odpPayA}}" ItemsSource="{Binding}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Path=Name}" /> <ComboBox Text="{Binding Path=Name}" ItemsSource="{Binding Source={StaticResource odpPayB}}" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
Toute idée sera la bienvenue!
merci d'avance...
Partager