2009-04-11 100 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" />