Сортировка элементов ItemsControl в WPF - CodeHelper

Сортировка элементов ItemsControl в WPF

2

Можно ли как-то отсортировать дочерние элементы ItemsControl, не прибегая к созданию нового (уже отсортированного) ItemsSource?

Sergey

Так не подойдёт?

List<MyObject> myInternalList = new List<MyObject>();
 ...
ICollectionView colView = CollectionViewSource.GetDefaultView(myInternalList);
colView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
safonovea

Подойдет. Напиши тогда этот способ как ответ, а я напишу как сделать сортировку непосредственно в XAML-разметке.

Новые ответы


0

Нужно отсортировать CollectionView:

List<MyObject> myInternalList = new List<MyObject>();
 ...
ICollectionView colView = CollectionViewSource.GetDefaultView(myInternalList);
colView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));

Нужно получить вид по умолчанию из списка. В этом случае вам не нужно отсортировать список, потому что он всегда будет отсортирован. Можно добавить столько SortDescriptions сколько вы хотите.

0

Можно использовать CollectionViewSource в качестве ItemsSource. Например так:

<Window ...
  xmlns:ComponentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase">
  <Window.Resources>
    <CollectionViewSource x:Key="viewSource" Source="{Binding SomeSource}">
      <CollectionViewSource.SortDescriptions>
        <ComponentModel:SortDescription Direction="Ascending" />
      </CollectionViewSource.SortDescriptions>
    </CollectionViewSource>
  </Window.Resources>
  ...
  <ListBox ItemsSource="{Binding Source={StaticResource viewSource}}" />
</Window>

v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.