ICollectionView добавляет фильтр в ObservableCollection - PullRequest
0 голосов
/ 18 февраля 2019

У меня проблема с моим приложением WPF, где фильтр поиска применяется к наблюдаемой коллекции, когда я добавляю фильтр в ICollectionView.Я получил два представления, которые являются двумя отдельными моделями представления.В этом случае одно представление позволяет вам искать в коллекции и манипулировать ею, а во втором - поле со списком, позволяющее пользователю выбрать элемент из коллекции.

Сначала я извлекаюэлементы моей наблюдаемой коллекции, как вы можете видеть в коде ниже.Затем я устанавливаю CollectionViewSource.Как и сейчас, я добавляю фильтр в CollectionView, который я реализовал.Моя проблема в том, что я думал, что фильтр будет применяться только к коллекции ICollectionView, которую я использую в списке, но это показывает, что он также применим к ObservableCollection.В списке используется CollectionView, а в выпадающем списке - ObservableCollection категорий.Но я не хочу, чтобы фильтр применялся к коллекции combobox, которая использует observablecolelction, поскольку я хочу показать все доступные элементы все время.

Как это исправить?

    public ViewModel () 
    {
         CollectionViewSource.GetDefaultView(Categories); 
    }


    public ObservableCollection<Category> Categories
    {
        get
        {
            return this._categories;
        }
        set
        {
            if (this._categories!= value)
            {
                this._categories= value;
                this.OnPropertyChanged("Categories");
            }
        }
    }


    private ICollectionView _categoriesCollection;  
    public ICollectionView CategoriesCollection
    {
        get
        {
            return this._categoriesCollection;
        }
        set
        {
            if (this._categoriesCollection!= value)
            {
                this._categoriesCollection= value;

                this.OnPropertyChanged("CategoriesCollection");
            }
        }
    }

1 Ответ

0 голосов
/ 18 февраля 2019

Вы привязываете к тому же представлению: Если я должен привязаться к ICollectionView или ObservableCollection

Вместо того, чтобы установить для вашего свойства CategoriesCollection возвращаемое значение CollectionViewSource.GetDefaultView(_categories), вы можете создатьновый взгляд, чтобы "исправить" это:

CategoriesCollection = new ListCollectionView(_categories);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...