首先请允许我说我对编码非常陌生,所以我的知识存在很大差距......任何人:
是的,我正在尝试在单击按钮时对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中,你可以尝试保持简单吗?
谢谢你们
答案 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" />