Как сохранить список данных с обратной сортировкой - PullRequest
1 голос
/ 11 августа 2010

У меня есть список, связанный с коллекцией.Я бы хотел, чтобы ListBox всегда менял порядок элементов.Этот обработчик, подключенный к событию загрузки элемента управления, работает для начальной загрузки, но не после этого.Я пытался использовать событие SourceUpdated, но это не похоже на работу.

Как мне поддерживать постоянную активную сортировку?

    MyList.Items.SortDescriptions.Add(New SortDescription("Content", ListSortDirection.Descending))

Ответы [ 2 ]

0 голосов
/ 11 августа 2010

Как хранится коллекция, которая поставляет элементы для ListBox?Это должна быть коллекция, которая поддерживает INotifyCollectionChanged.Каркас предоставляет ObservableCollection<T>, который вы можете использовать.

В конструкторе вашей ViewModel (или там, где живет коллекция) вы получите DefaultView для добавления SortDescription.CollectionView подобен слою поверх вашей коллекции, который вы можете использовать для сортировки, группировки, фильтрации и т. Д. Элементов, фактически не влияя на базовый источник данных.Фреймворк создает по умолчанию для вас.Чтобы получить ссылку на него, вы можете использовать код, подобный следующему:

        var collectionView = CollectionViewSource.GetDefaultView(Widgets);
        if(collectionView == null)
            return;

        collectionView.SortDescriptions.Add(new SortDescription("Content", ListSortDirection.Descending));

Имея это, вы сможете добавлять элементы в ObservableCollection<T>, и порядок сортировки будет поддерживаться.

0 голосов
/ 11 августа 2010

Если ваша исходная коллекция является List<T> или какой-либо другой коллекцией, которая не реализует INotifyCollectionChanged, то WPF не сможет обнаружить, когда элемент добавлен. Вам нужно использовать коллекцию, которая реализует INotifyCollectionChanged, например ObservableCollection<T>.

Кроме того, элементы в вашей коллекции необходимо реализовать INotifyCollectionChanged, чтобы изменения в элементах учитывались

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...