我有一個使用MVVM模式編寫的跨平臺項目(沒有使用特定的框架,只是自編寫的實現)。項目有幾個獨立的模塊,每個模塊都有幾個頁面。每個頁面都有ViewModel和某種負責數據導向邏輯(獲取,保存,刪除,轉換等)的管理者。因此,數據流看上去只有這個:使用MVVM中的Rx跟蹤收集更改
VM - >管理 - >服務 - >管理 - > VM
當虛擬機裝載它要求經理數據。 Manager執行服務調用,獲取數據,從DTO構建模型集合,將此集合返回到ViewModel,ViewModel將模型集合轉換爲要在列表中呈現的ViewModels集合 。
現在我正在尋找一種方法來實現這種使用Rx的邏輯。大多數頁面有一個要編輯的主要列表(項目插入,刪除,修改)和多個支持集合(某些組合框的提供者可從中選擇值)。 支持集合可以通過標準異步/等待調用或通過將任務轉換爲Rx輕鬆檢索 - 它們不成問題。但是可以修改的列表是。 我只是無法弄清楚如何在不破壞Rx邏輯的情況下跟蹤頁面整個生命週期的變化。 我有選擇訂閱:
IEnumerable<Model>
Task<IEnumerable<Model>>
IObservable<IEnumerable<Model>>
,但我想我有認購IObservable<Model>
因爲我需要一種方法來跟蹤個人的變化。 我需要一種方法來從其他方法(如添加,刪除或編輯)修改此集合。 因此,我應該通過Observable.Create
(或其他方法)創建IObservable
並將IObserver
存儲在Manager的某處,以在其他方法中調用OnNext
或OnError
?但它看起來不像一個Rx-way-to-do。 你對我的問題有什麼建議嗎?任何意見讚賞。謝謝。你可能會說Rx不是解決跟蹤可修改列表問題的最佳方法,因爲它不是無盡的事件流,而且我必須自己推動修改,但是Rx具有非常方便的過濾數據和處理方式錯誤,所以我真的很期待在應用程序中實現它。