2009-04-11 101 views
3

首先讓我只是說我很新的編碼,所以我的知識有很大的差距... anywho:按鈕點擊排序WPF列表框?

對,我試圖排序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中,你可以嘗試並保持簡單嗎?

謝謝你們

回答

2

希望它能幫助: 谷歌想出了這個(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" />