我想在用戶滾動數據網格時從我的WCF服務檢索數據。有什麼辦法可以達到這個目的,特別是那些贊成遵循mvvm模式的選項。如何在滾動時填充itemssource
1
A
回答
1
如果有人仍在尋找這個,這裏有一種方法可以在Silverlight和MVVM Light中實現它。其他方法也是可能的,比如點擊垂直滾動條的位置,但是我相信在沒有自定義控件的情況下SL是無法訪問的。
在DataGrid LoadingRow事件中,檢查當前行是否接近數據綁定itemssource的底部。然後向ViewModel發送消息以開始獲取下一組行。 ViewModel中的註冊事件添加到數據綁定屬性中。
這是一個簡化的代碼示例。
在後面的代碼:
void dg_LoadingRow(object sender, DataGridRowEventArgs e)
{
ObservableCollection<YourDataType> list = dg.ItemsSource as ObservableCollection<YourDataType>;
int idx = list.IndexOf((YourDataType)e.Row.DataContext);
if ((list.Count() - idx) == 5) //start fetching when loading 5th from bottom of current list
{
Messenger.Default.Send(null, "fetchdatatoken");
}
}
在視圖模型,實現這樣的事情:
Messenger.Default.Register(this, "fetchdatatoken",() =>
{
var returnedList = webservice.getdata(chunkNumber, chunkSize, "any additional parameters you need for your query")
yourListProperty.AddRange(returnedList); //yourListProperty is the databound ObservableCollection property
}
其他項目,你應該代碼:添加界限
- 檢查
- 如果你的塊大小太小,那麼你可能想要交易初始加載特殊情況。
- 請注意它在數據庫服務器上產生的負載
- 使您的Web服務訪問效率更高。例如,在LINQ的使用跳過()和Take()
- 防止多個併發的服務調用
- 小心在客戶端的內存使用,處理UnloadingRow事件以釋放內存,如果你的列表是大
- 什麼否則我可能會丟失
0
我剛剛發表了一些博客文章和樣本,而用戶通過一個DataGrid滾動它們實現「隱形分頁」。我是一個偉大的MVVM粉絲,所以,我的解決方案當然適合這種方法。有關詳細信息,請參見this answer。
相關問題
- 1. 使用ItemsSource填充時的樣式TabItem
- 2. 滾動時保持填充條GridView
- 3. 向下滾動時填充不正確
- 4. IE:水平滾動填充
- 5. div滾動與填充?
- 6. Listview不填充unitl滾動
- 7. 如何啓用垂直滾動時添加填充
- 8. 在滾動條下顯示填充
- 9. RecyclerView在填充父容器後滾動
- 10. 在滾動上添加填充
- 11. UITableView僅在滾動後填充
- 12. 如何在ASP中完成非滾動填充頁面佈局?
- 13. 箱尺寸:如何在Firefox中擺脫滾動條填充
- 14. 滾動時如何填寫標題?
- 15. 如何讓文本框填充列和自動滾動?
- 16. 如何動態填充JSON數據滾動型
- 17. iOS:在滾動UITableView時填充應用程序崩潰/內存
- 18. Core-Plot CPTRangePlot填充區域在滾動時失真(iOS)
- 19. 在表中填充無限滾動運行時
- 20. RecyclerView:在AppBarLayout向上滾動時填充屏幕高度(隱藏)
- 21. 使用動態填充列表視圖時滾動條不滾動
- 22. 如何在ActiveRecord驗證錯誤後填充自動填充
- 23. 如何在默認情況下填充自動填充?
- 24. Java:滾動時填充文本區域(動態更新)
- 25. 如何動態填充JTree?
- 26. 如何動態填充CheckedListBox?
- 27. 如何在填充另一個表時填充表格?
- 28. 如何關閉自動填充/自動填充SSMS 2012?
- 29. Overscroll滾動指標與剪輯填充
- 30. 填充UITextView,因爲它滾動