Bonjour à tous!
Dans le cadre de ma formation j'attaque un exercice sur le binding d'un combobox avec une classe héritée de Ilist
Voici déjà le code
Class Régions
Fichier Principal
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
61
62
63
64
65 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Wpf_006_ListesDeroulDynamBinding { class Regions : List<Region> { private Region[] _lesRegions; private int _nbRegion=2; public Regions() { _lesRegions = new Region[_nbRegion]; this.remplir(); } private void remplir() { Region Region1 = new Region(8, "RH", "Rhones-Alpes"); Region1[0] = 1; Region1[1] = 7; Region1[2] = 26; Region1[3] = 38; Region1[4] = 42; Region1[5] = 69; Region1[6] = 73; Region1[7] = 74; Region Region2 = new Region(5, "P", "Picardie"); Region2[0] = 14; Region2[1] = 27; Region2[2] = 50; Region2[3] = 61; Region2[4] = 76; this._lesRegions[0] = Region1; this._lesRegions[1] = Region2; } public Region this[int i] { get { if ((i < this.NbRegions) && (i >= 0)) { return this._lesRegions[i]; } else { throw new Exception("indice de region invalide"); } } } public int NbRegions { get { return this._lesRegions.Length; } } } }
Modif du XAML comme ceci
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 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace Wpf_006_ListesDeroulDynamBinding { /// <summary> /// Logique d'interaction pour MainWindow.xaml /// </summary> public partial class MainWindow : Window { private Regions rs; public MainWindow() { InitializeComponent(); rs = new Regions(); } private void Window_Loaded(object sender, RoutedEventArgs e) { // LA donnée source "rs" doit être collection //Binding par XAML this.cbRegion.DataContext = this.rs; ////Binding par code //Binding bind = new Binding(); //bind.Source = rs; //bind.Mode = BindingMode.OneWay; //Définition de ma property à afficher dans la combo cbRegion.DisplayMemberPath = "Nom"; } private void Quitter_Click(object sender, RoutedEventArgs e) { Application.Current.Shutdown(); } } }
Avant de poster ce message j' ai testé le binding par code (code quoté) mais aucun des deux ne fonctionne. le combobox est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <ComboBox ItemsSource="{Binding Path=.}" Height="23" HorizontalAlignment="Left" Margin="110,42,0,0" Name="cbRegion" VerticalAlignment="Top" Width="297" />
y a il un morceau de code ou un paramètre oublié dans mon code??
merci d'avance
Partager