Как добавить сортировку в WPF список (ListView)? - CodeHelper

Как добавить сортировку в WPF список (ListView)?

2

Есть WPF список на основе тега ListView. Как добавить возможность сортировки этого списка при клике на header колонки?

Лучший ответ:

1

Дополнение к этому ответу

В блоге Thomas Levesque’s blog есть два поста, в которых описывается решение этой задачи:

  1. Автоматическая сортировка GridView при клике на заголовок — основные принципы и простейший вариант решения.
  2. Автоматическа сортировка GridView (продолжение) — улучшенная вервия кода из первого поста. Включает отрисовку «стрелочки» на заголовке колонки в зависимости от направления сортировки.

Новые ответы


0

В качестве отправной точки можно попробовать использовать способ, описанный здесь

Чак Норрис

Недостаток такого решения в том, что его трудно использовать повторно. Вернее его нужно воспроизводить для каждого нового списка заново.

1

Вот так:

<ListView ItemsSource="{Binding Persons}"
                  IsSynchronizedWithCurrentItem="True"
                  util:GridViewSort.AutoSort="True">        
    <ListView.View>
        <GridView>
            <GridView.Columns>
                <GridViewColumn Header="Name"
                                    DisplayMemberBinding="{Binding Name}"
                                    util:GridViewSort.PropertyName="Name"/>
                <GridViewColumn Header="First name"
                                    DisplayMemberBinding="{Binding FirstName}"
                                    util:GridViewSort.PropertyName="FirstName"/>
                <GridViewColumn Header="Date of birth"
                                    DisplayMemberBinding="{Binding DateOfBirth}"
                                    util:GridViewSort.PropertyName="DateOfBirth"/>
            </GridView.Columns>
        </GridView>
    </ListView.View>    
</ListView>
safonovea

А util:GridViewSort это что такое?


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