J'ai deux ListBox, les deux utilisent Extended SelectionMode. Le ItemsSource du premier est une liste, et utilise un datatemplate. J'essaye d'utiliser une agrégation de certaines propriétés du premier comme itemsource pour le second. Par exemple:WPF: Agrégation de propriétés sur un ListBox
public class MultiAppPropertyAggregator : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
IList<SomeObject> selectedItems = value as IList<SomeObject>;
Dictionary<string, string> bundles = new Dictionary<string,string>();
foreach(SomeObject myobj in selectedItems) {
foreach(KeyValuePair<string,string> name in myobj.Names) {
selectedItems.Add(name.Key, name.Value);
....
<ListBox x:Name="lstApplication" ItemsSource="{Binding}" SelectionChanged="lstApplication_SelectionChanged" SelectionMode="Extended" />
<ListBox x:Name="lstBundles" ItemsSource="{Binding ElementName=lstApplication,Path=SelectedItems,Mode=OneWay,Converter={StaticResource MultiAppPropertyAggregator}}" ItemTemplate="{StaticResource DictionaryList}" SelectedValuePath="Key" SelectionMode="Extended" />
Ainsi, les objets de la première liste contiennent une propriété de type Dictionary. Je souhaite ajouter tous les éléments des dictionnaires de tous les éléments sélectionnés dans la première liste à la deuxième liste.
Le convertisseur semble être appelé en charge initiale, puis pas à nouveau après cela et je me retrouve avec une deuxième zone de liste vide. Est-ce que je manque quelque chose?
Merci, la première méthode d'écoute pour l'événement SelectionChanged et le réglage de ItemsSource chaque fois fonctionne parfaitement. – Echilon