Сортировать WPF ListBox по нажатию кнопки? - PullRequest
3 голосов
/ 11 апреля 2009

Прежде всего, позвольте мне сказать, что я очень плохо знаком с программированием, поэтому в моих знаниях есть большие пробелы ... anywho:

Правильно, я пытаюсь отсортировать список WPF при нажатии кнопки, желательно в чистом xaml (иначе VB). Мне трудно смотреть, так как большинство примеров написано на C #. Вот мой код:

 <Grid.Resources>
      <CollectionViewSource x:Key="myCollectionView"
                            Source="{Binding Path=Query4, Source={x:Static Application.Current}}" >
           <CollectionViewSource.SortDescriptions>
                <scm:SortDescription PropertyName="ContactID"
                                     Direction="Descending"/>
           </CollectionViewSource.SortDescriptions>
      </CollectionViewSource>
</Grid.Resources>

<ListBox x:Name="ContDefault"
         IsSynchronizedWithCurrentItem="True"
         ItemsSource="{Binding Source={StaticResource myCollectionView}}"
         ItemTemplate="{StaticResource ContactsList}" />

Теперь я хочу добавить такую ​​кнопку:

 <Button x:Name="SortNameAsc"
         Content="Sort By Name"
         Visibility="Visible">

Теперь, когда эта кнопка нажата, я бы хотел, чтобы список сортировался по полю «Имя», я предполагаю, что мне нужно как-то изменить описание сортировки, так что кто-нибудь может сказать мне, пожалуйста? Или я собираюсь пойти этим путем. Опять же, желательно в XAML, но, если нужно, в VB, не могли бы вы попытаться сделать это проще, пожалуйста?

Спасибо, ребята

1 Ответ

2 голосов
/ 13 апреля 2009

Надеюсь, это поможет: Google придумал это (http://www.kudzuworld.com/blogs/Tech/20070815A.en.aspx)

ListCollectionView view = new ListCollectionView(channel.Members);
view.SortDescriptions.Add(new System.ComponentModel.SortDescription("lastName",
  System.ComponentModel.ListSortDirection.Ascending);
view.SortDescriptions.Add(new System.ComponentModel.SortDescription("firstName",
  System.ComponentModel.ListSortDirection.Ascending); 
view.CustomSort = new IComprarerImplementation; //Do this if you want a custom sort;
view.Refresh();

В отношении примера 3 это должно быть правильно:

<ListBox x:Name="ContDefault"
         IsSynchronizedWithCurrentItem="True"
         ItemsSource="{Binding Source={StaticResource myCollectionView}}"
         ItemTemplate="{StaticResource ContactsList}"
         SortDescription="First Name" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...