Binding Combobox Listview
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:
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:
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:
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;
} |