2009-04-11 20 views
3

Zunächst einmal lassen Sie mich einfach sagen, ich bin sehr neu zu codieren, so gibt es große Lücken in meinem Wissen ... anywho:Sortieren WPF ListBox auf Schaltfläche klicken?

Richtig, ich versuche, eine WPF-Listbox zu sortieren, wenn eine Schaltfläche angeklickt wird, vorzugsweise in reinem XAML (sonst VB). Es fällt mir schwer zu sehen, da die meisten Samples in C# geschrieben sind. Hier ist mein Code:

<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}" /> 

Nun, was ich tun möchte, ist eine Schaltfläche hinzufügen, etwa so:

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

Nun, wenn diese Schaltfläche geklickt wird, würde ich das Listenfeld wie durch das Feld zu sortieren "Vorname", ich nehme an, ich muss die Sortierung irgendwie ändern, also könnte mir jemand sagen wie bitte? Oder gehe ich über diese Art und Weise. Wieder vorzugsweise in XAML, aber wenn in VB sein könnte, könnten Sie versuchen, es einfach zu halten bitte ??

Danke Jungs

Antwort

2

Hoffe, es hilft:

<ListBox x:Name="ContDefault" 
     IsSynchronizedWithCurrentItem="True" 
     ItemsSource="{Binding Source={StaticResource myCollectionView}}" 
     ItemTemplate="{StaticResource ContactsList}" 
     SortDescription="First Name" /> 
: Google mit diesem ( 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(); 

Bezüglich Beispiel 3 das richtig aufkam sein sollte