有没有人尝试过创建一个对集合进行排序的视图?但是,除非我遗漏了什么,否则ICollectionView接口是存在的,并且它声称具有与其对应的WPF / SL接口相同的职责(排序、分页、过滤)。
我有兴趣了解如何获取项目集合,然后通过WinRT中的视图对它们进行排序。
注意,我知道我可以手动完成这项工作,但是,我想看看排序的集合与WinRT主题转换是如何交互的,这些转换在执行排序时似乎会添加视觉效果。
发布于 2012-06-24 13:50:28
不幸的是,在Win8中不支持对集合视图进行排序(也不支持过滤或分组)。要做到这一点,唯一的方法是直接操作数据源,然后将其分配给source属性。
这被认为是对后Win8时间框架的改进。希望我有更好的消息:)
发布于 2012-07-04 00:27:38
Linq似乎是推荐的方式,因为排序和过滤器已经离线了。
所以你可以在你的模型中采用这样的东西:
private MyDataSourceProvider dataSource;
private ObservableCollection<MyType> sortedDataBackingField;
public ObservableCollection<MyType> SortedData
{
get
{
return sortedDataBackingField;
}
set
{
sortedDataBackingField = value;
NotifyPropertyChanged("SortedData");
}
}
public void SortByName()
{
SortedData = new ObservableCollection<MyType>(dataSource.Entities.OrderBy(
entity => entity.Name));
}
public void SortByAge()
{
SortedData = new ObservableCollection<MyType>(dataSource.Entities.OrderBy(
entity => entity.Age));
}
在您选择的模式中将SortByName和SortByAge连接到您的UI,并简单地绑定到SortedData属性:
<ItemsControl ItemsSource=”{Binding SortedData}”/>
编辑:关于转换,您应该会发现这种方法将为您排序的项触发AddDeleteThemeTransition;只需在ItemsControl中添加类似以下内容:
<ItemsControl.ItemContainerTransitions>
<TransitionCollection>
<AddDeleteThemeTransition></AddDeleteThemeTransition>
</TransitionCollection>
</ItemsControl.ItemContainerTransitions>
https://stackoverflow.com/questions/7649532
复制相似问题