我有两个 ListBox,都使用 Extended SelectionMode。第一个的 ItemsSource 是一个 List,并使用数据模板。我正在尝试使用第一个属性的聚合作为第二个的 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 类型的属性。我想将第一个列表中所有选定项目的字典中的所有项目添加到第二个列表中。
转换器似乎在初始加载时被调用,然后不再调用,我最终得到一个空的第二个列表框。我错过了什么吗?