Bonjour

J'ai une combobox que je rempli via un objectDataProvider (odpUgmUsers).
Lors de la sélection d'une valeur, j'utilise l'événement "selectionChanged" pour remplir une listBox via un autre objectDataProvider (odpUgmUserGroups).

- Lorsque je sélectionne une première fois un élément dans la combobox, ma listbox se rempli bien avec les valeurs retournée par odpUgmUserGroups .
Mais lorsque je sélectionne un second item de la combobox, plus rien ne se passe.

voicis mon code
Merci pour votre aide

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
 
 <UserControl.Resources>
        <ObjectDataProvider x:Key="odpUgmUsers"
                    ObjectType="{x:Type local:GbbUserProvider}" />
        <ObjectDataProvider x:Key="odpUgmUserGroups"
                    ObjectType="{x:Type local:GbbUserProvider}" />
    </UserControl.Resources>
 
<ComboBox 
                  Focusable="true" Height="23" Margin="0,65.013,0,0"
                  Name="cbListLeft" VerticalAlignment="Top" 
            IsEditable="True"
            IsReadOnly="False"
            IsTextSearchEnabled="True"
                  DataContext="{Binding Source={StaticResource odpUgmUsers}}" ItemsSource="{Binding}"
                  SelectionChanged="cbListLeft_SelectionChanged">
 
            <!--DataContext="{Binding Source={StaticResource odpGbbUser}}" ItemsSource="{Binding}"  TextBoxBase.TextChanged="cbListLeft_TextChangedEventArgs" SelectedValue="">-->
 
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Cn}" />
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
 
 
<ListBox Margin="0,129.948,0,26.656" Name="lbListLeft"
                 DataContext="{Binding Source={StaticResource odpUgmUserGroups}}" ItemsSource="{Binding}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Cn}" />
    </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
Code behind
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
 
    public partial class UGMTab : UserControl
    {
        DirectoryEntry _deMainDirectoryEntry;
        DirectoryEntry _deGroupEntry;
        public UGMTab()
        {
            InitializeComponent();
            ObjectDataProvider odpGbbUser = FindResource("odpUgmUsers") as ObjectDataProvider;
 
            RemotingModule module = new RemotingModule(ADMFields.enuADMModule.Ugm, ADMFields.enuRthHubs.ParisHub);
            string _sMainDirectoryEntry = module.ModuleConfiguration["ADEntryDn"];
            _deMainDirectoryEntry = ADConnection.createDirectoryEntry("LDAP://"+_sMainDirectoryEntry);
 
            string _sGroupEntry = module.ModuleConfiguration["GroupEntry"];
            _deGroupEntry = ADConnection.createDirectoryEntry("LDAP://" + _sGroupEntry);
 
 
            odpGbbUser.MethodName = "GetUsers";
            odpGbbUser.MethodParameters.Add(_deMainDirectoryEntry);
        }
 
        //Lorsque l'on sélectionne un utilisateur dans la combobox, on rempli la listbox avec les groupes auquel il appartient
        private void cbListLeft_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ADUser userRetreived = (ADUser)cbListLeft.SelectedItem;
            ObjectDataProvider odpUserGroup = FindResource("odpUgmUserGroups") as ObjectDataProvider;
 
//Rappel la méthode pour récupérer les groupe de l'utilisateur choisi dans la combobox
            odpUserGroup.MethodName = "GetUserGroups";
            odpUserGroup.MethodParameters.Add(_deGroupEntry);
            odpUserGroup.MethodParameters.Add(userRetreived);
 
        }
         }
Object Data provider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
        //Methode to retreive a list of Users
        public static ObservableCollection<ADUserGroup> GetUserGroups(DirectoryEntry entry, ADUser us)
        {
            ObservableCollection<ADUserGroup> _results = new ObservableCollection<ADUserGroup>();
            foreach (ADUserGroup obj in us.getGroups(entry))
            {
                _results.Add(obj);
            }
            return _results;
        }