Я думаю, что все смущены этой частью
CollectionViewGroup collectionView = contactsList.SelectedItems[0] as CollectionViewGroup;
ContactList selectedContact = contactsList.SelectedItems[0] as ContactList;
вы смотрите только на первый выбранный элемент. (SelectedItems[0]
), но рассматриваете это как одно или другое?
вам, вероятно, нужно что-то вроде
// only create the list once, outside all the loops
ObservableCollection<AggregatedLabel> labelList = new ObservableCollection<AggregatedLabel>();
foreach (var selected in contactsList.SelectedItems)
{
// pretty much your existing code here, referencing selected instead of SelectedItems[0]
}
// only set the list once, outside all the loops
tagsList.ItemsSource = labelList;
в идеале, вы бы не устанавливали источник элементов в tagsList, у вас уже была бы эта привязка к коллекции, и вы просто заменяли бы содержимое в этом методе. (только один вызов, чтобы очистить коллекцию вверху, и нет вызова, чтобы установить ItemsSource, так как он уже был бы связан)