簡體   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