Можете ли вы отключить синхронизацию выделения в WPView CollectionViewSource? - PullRequest
2 голосов
/ 10 февраля 2010

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

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

1 Ответ

0 голосов
/ 10 февраля 2010

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

CollectionViewSource.GetDefaultView(this.ItemsSource);

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

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

new CollectionView(this.ItemsSource as IList);

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

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

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

...