按钮点击时如何对WPF ListBox进行排序?

3

首先,我想说我是一个编程新手,所以我的知识有很大的空白...... 无论如何:

嗯,我想在按钮点击时使用纯XAML(或者VB)来对WPF列表框进行排序。由于大多数示例都是用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
希望能帮到你: 谷歌找到了这个(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" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接