发布
社区首页 >问答首页 >在WinRT中创建排序集合视图

在WinRT中创建排序集合视图
EN

Stack Overflow用户
提问于 2011-10-04 22:31:30
回答 2查看 3.5K关注 0票数 31

有没有人尝试过创建一个对集合进行排序的视图?但是,除非我遗漏了什么,否则ICollectionView接口是存在的,并且它声称具有与其对应的WPF / SL接口相同的职责(排序、分页、过滤)。

我有兴趣了解如何获取项目集合,然后通过WinRT中的视图对它们进行排序。

注意,我知道我可以手动完成这项工作,但是,我想看看排序的集合与WinRT主题转换是如何交互的,这些转换在执行排序时似乎会添加视觉效果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-24 13:50:28

不幸的是,在Win8中不支持对集合视图进行排序(也不支持过滤或分组)。要做到这一点,唯一的方法是直接操作数据源,然后将其分配给source属性。

这被认为是对后Win8时间框架的改进。希望我有更好的消息:)

票数 4
EN

Stack Overflow用户

发布于 2012-07-04 00:27:38

Linq似乎是推荐的方式,因为排序和过滤器已经离线了。

所以你可以在你的模型中采用这样的东西:

代码语言:javascript
代码运行次数:0
复制
    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属性:

代码语言:javascript
代码运行次数:0
复制
<ItemsControl ItemsSource=”{Binding SortedData}”/>

编辑:关于转换,您应该会发现这种方法将为您排序的项触发AddDeleteThemeTransition;只需在ItemsControl中添加类似以下内容:

代码语言:javascript
代码运行次数:0
复制
<ItemsControl.ItemContainerTransitions>
    <TransitionCollection>
        <AddDeleteThemeTransition></AddDeleteThemeTransition>
    </TransitionCollection>
</ItemsControl.ItemContainerTransitions>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7649532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档