Можете ли вы отключить синхронизацию выбора в WPView CollectionViewSource?

У меня есть несколько экземпляров CollectionViewSource, все они используются в одной и той же ObservableCollection. У меня также есть несколько элементов управления, которые должны показывать отфильтрованные версии коллекции (отсюда CollectionViewSources). У меня проблема в том, что CollectionViewSource заставляет их выбрать один и тот же элемент. Есть ли способ отключить это?

Спасибо Джейсон Льюис

1 ответ

Решение

Если вы используете метод (я не уверен в этом, но, вероятно, CollectionViewSource в xaml)

CollectionViewSource.GetDefaultView(this.ItemsSource);

несколько раз он будет возвращать только один и тот же ICollectionView (если мы говорим об одной и той же коллекции, связанной несколько раз), это означает, что если вы примените фильтр к одному, который применяется ко всем, также как представление коллекции отслеживает текущий элемент, текущий элемент будет быть синхронизированы между различными взглядами.

Вы можете обойти эту проблему, создав CollectionView для каждого фильтра / выбора, который вы хотите иметь, используя

new CollectionView(this.ItemsSource as IList);

Есть несколько типов, которые реализуют ICollectionView, CollectionView и ListCollectionView. в приведенном выше коде я не получил представление по умолчанию, я создал новый, поэтому его сортировка / сортировка является уникальной.

Когда вы используете исходный элемент items, wpf создает представление коллекции, чтобы обернуть коллекцию, это представление коллекции возвращается в вызове GetDefaultView, что полезно для повседневных ситуаций, но не для крайних случаев.

вот сообщение в блоге от bea, которое объясняет это немного лучше

Другие вопросы по тегам