2つのリストボックスがあり、どちらもExtended SelectionModeを使用します。最初のItemsSourceはListで、データ型を使用します。私は最初のいくつかのプロパティの集約を2番目のアイテムソースとして使用しようとしています。例:WPF: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" />
したがって、最初のリストのオブジェクトには辞書型のプロパティが含まれています。私は最初のリストのすべての選択された項目の辞書のすべての項目を2番目のリストに追加したいと思います。
コンバーターは最初の読み込み時に呼び出されたようですが、その後はもう一度読み込まれず、空の2番目のリストボックスになります。何か不足していますか?
ありがとう、SelectionChangedイベントをリッスンし、ItemsSourceを毎回設定する最初の方法は、完全に機能します。 – Echilon