按钮单击时排序WPF ListBox?

时间:2009-04-11 12:32:14

标签: wpf vb.net sorting 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">

现在点击此按钮时,我希望列表框按“名字”字段排序,我假设我必须以某种方式更改排序说明,所以有人能告诉我怎么样?或者我正在采取这种方式。再次优先在XAML中,但如果需要在VB中,你可以尝试保持简单吗?

谢谢你们

1 个答案:

答案 0 :(得分: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" />