Привязка комбинированного списка к CollectionView показывает отфильтрованные элементы. Зачем? - PullRequest
0 голосов
/ 22 февраля 2012

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

 //public CollectionView MyCapitoliList { get; private set; }
 public ICollectionView MyCapitoliList { get; private set; }

Вот код, который я использую для создания CollectionView и ICollectionView

MyCapitoliList = CollectionViewSource.GetDefaultView(listaCapitoli);
//MyCapitoliList = new CollectionView(listaCapitoli);


MyCapitoliList.Filter = new Predicate<object>(isCapitoloMaster);

Я проверил, что CollectionView печатает все его элементы из кода C #, и он содержит только отфильтрованные элементы, поэтому CollectionView в порядке. Почему я получаю все нефильтрованные элементы, если связываю их с полем со списком?

Спасибо Filippo

1 Ответ

1 голос
/ 22 февраля 2012

MSDN говорит о CollectionView классе ...

Вы не должны создавать объекты этого класса в своем коде.Чтобы создать представление коллекции для коллекции, которая реализует только IEnumerable, создайте объект CollectionViewSource, добавьте свою коллекцию в свойство Source и получите представление коллекции из свойства View.

Далее добавлено ...

В приложениях WPF все коллекции имеют связанный вид коллекции по умолчанию.Вместо того, чтобы работать с коллекцией напрямую, механизм привязки всегда обращается к коллекции через связанное представление.Чтобы получить представление по умолчанию, используйте метод CollectionViewSource.GetDefaultView.

...