ItemsControl - связывание элементов управления и сортировки заказов в резервной коллекции вместе - PullRequest
0 голосов
/ 08 июля 2010

Есть ли способ связать ItemsControl (например, ListView или DataGrid) с отсортированной коллекцией так, чтобы:

  • всякий раз, когда коллекция восстанавливается с помощью кода, ItemsControl автоматически отражает новый порядок сортировки,
  • И всякий раз, когда сортируется ItemsControl, происходит повторная сортировка коллекции?

Спасибо,
Бен

Ответы [ 3 ]

0 голосов
/ 08 июля 2010

Помещение ваших предметов в ObservableCollection и затем связывание с ObservableCollection должно помочь. Любая сортировка, выполняемая в ObservableCollection, должна «переводиться» на уровень пользовательского интерфейса.

0 голосов
/ 08 июля 2010

Вам нужно будет использовать

CollectionViewSource.GetDefaultView() 

метод, чтобы получить представление по умолчанию вашей ObservableCollection и применить к нему сортировку.

Например, ниже я сортирую коллекцию ObservableCollection с именем «авторы» по BookTitle.

        ObservableCollection<Author> authors = new ObservableCollection<Author>();
        authors = PopulateCollection();

        // Sort by BookTitle
        System.ComponentModel.ICollectionView colView;
        colView = CollectionViewSource.GetDefaultView(authors);
        colView.SortDescriptions.Add(new System.ComponentModel.SortDescription("BookTitle", ListSortDirection.Descending));
0 голосов
/ 08 июля 2010

попробуйте определить эти два атрибута в бининге: IsSynchronizedWithCurrentItem = true BindsDirectlyToSource = true

я не пробовал это, но это может работать ..

...