Можете ли вы отключить синхронизацию выбора в 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, которое объясняет это немного лучше