首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INotifyCollectionChanged和Windows 8

INotifyCollectionChanged和Windows 8
EN

Stack Overflow用户
提问于 2013-09-06 16:49:09
回答 1查看 219关注 0票数 1

为了解决CollectionViewSource在WinRT上的不足,iPhone决定编写一个视图模型中存在的替代方案。

这在Windows上运行得很好,但是在WinRT上,CollectionChanged事件从来不是null事件,所以集合永远不会加载(除非您从页面向后导航,然后再回到页面,但这是因为视图模型存储在状态中)。

源代码在这里:https://gist.github.com/jamie94bc/6262479

谢谢!

视图模型中的

代码语言:javascript
复制
private ObservableCollection<Task> _col;
private CollectionViewSource<Task> _colView;

public ObservableCollection<Task> Col {
    get { return _col ?? (_col = new ObservableCollection<T>()); }
}

public CollectionViewSource<Task> ColView {
    get { return _colView ?? (_colView = new CollectionViewSource<Task>(this.Col, x => x.IsComplete, new SortDescription<Task>(x => x.Created))); } 
}

在XAML中的应用

代码语言:javascript
复制
<ListView ItemsSource="{Binding ColView}"></ListView>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 17:34:25

基本上,答案是在ObservableCollection<T>实现上公开一个视图属性(作为一个CollectionViewSource )。

然后,CollectionViewSource修改View,而不是实现INotifyCollectionChangedIEnumerable

事实证明,在Windows 8中,INotifyCollectionChanged实际上被IObservableVector取代了,而在早期预览中,ObservableCollection根本不起作用--我猜想在Windows 8的幕后发生了一些事情,它处理的是ObservableCollection,而不是INotifyCollectionChanged

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18662709

复制
相关文章

相似问题

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