У меня есть два списка ListBox, оба используют расширенный режим выбора. ItemsSource первого представляет собой список и использует шаблон данных. Я пытаюсь использовать агрегацию некоторого свойства из первого в качестве источника элементов для второго. Например:
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" />
Итак, объекты в первом списке содержат свойство типа Dictionary. Я хочу добавить все элементы в словарях всех выбранных элементов в первом списке во второй список.
Преобразователь, кажется, вызывается при начальной загрузке, а затем не снова после этого, и я получаю пустой второй список. Я что-то упускаю?