2009-04-11 3 views
3

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

Правильно, я пытаюсь сортировать список 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"> 

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

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

ответ

2

Надеются, что это помогает: 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" />