繁体   English   中英

MVVM和Windows Phone Hub控制

[英]MVVM and the Windows Phone Hub Control

我最近在这里问了一些有关MMVM的问题,并感谢您的回答。 关于同一基础数据源的筛选视图及其应如何工作,我还有一个问题。

假设我有一个简单的“项目”列表,并希望在Hub控件中显示各种过滤视图。 每个视图将通过单独的HubSection公开。 因此,我可能有一个HubSection显示所有项目,另一个显示今天到期的项目,另一个显示本周的项目,最后一个显示本月的项目。

全部。 今天。 本星期 。 这个月

我的计划是将每个HubSection绑定到视图模型的单独属性(让我们保持简单,并假设已设置中心的数据上下文,并且每个HubSection都绑定到该数据上下文的属性)。 因此,ObservableCollection类型的属性称为GetAlltems(),GetTodaysItems(),GetThisWeeksItems()和GetThisMonthsItems()。

我的问题是关于如何以及何时从模型中获取数据。 一种选择是在创建视图模型时(在其构造函数中)声明并填充四个ObservableCollection属性。 看来问题在于我在内存中有四个基本相同的数据副本(只是应用了不同的过滤器),并且相同的数据存在于数据存储本身中(在我的例子中是SQLite)。

另一种选择是在创建视图模型时不填充这些属性,而仅绑定到获取适当的过滤数据集并即时将其作为ObservableCollection返回的属性。 但是我不确定当用户在HubSections上滑动时会产生什么样的性能。 如果HubSection在屏幕外(例如第四个HubSection,而第一个在屏幕上),那么绑定列表控件是在此时填充的还是仅当它出现时才发生?

每个过滤后的视图的数据集都很小(“所有”集合的最大数量可能是数百个)。 但是在移动设备上,似乎仍不需要预先预先填充这四个属性。

无论如何,这似乎是一个合理的通用要求(多个HubSection控件,每个控件都绑定到相同基础数据源的一组过滤后的控件)。 因此,对最优雅的方式感兴趣,同时具有合理的性能和内存使用率。

我什至还没有更改集合以及通知可能如何工作:)

谢谢。

看一下CollectionViewSource它允许使用相同的对象集,但定义过滤器。 我确实必须说,winrt wp8.1的实现已发生了一些变化。 因此,请仔细检查有关如何实际设置过滤器的文档。 我认为这些天的方法是使用简单的Linq查询

MSDN文档

http://msdn.microsoft.com/library/windows/apps/br209833

从一些较旧的来源(适用于wp8 SL)

http://www.hanselman.com/blog/CollectionViewSourceIsCrazyUsefulForBindingToFilteredObservableCollectionsOnWindowsPhone8.aspx http://www.spikie.be/blog/post/2012/04/12/Filtering-collections-from-XAML-using-CollectionViewSource.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM