簡體   English   中英

MVVM具有不斷更新的數據

[英]MVVM with continuously updated data

我目前正在開發Windows應用程序(8.1),它應該執行以下操作:

  • 與USB HID設備通話(想出來)
  • 顯示來自該設備的數據(我想使用Oxyplot顯示這些數據,得到了)
  • 使用MVVM(我選擇了SimpleMVVM工具包,因為它已經有VS2013的模板)
  • 創建一個模擬數據提供程序,生成隨機數據並將其提供給我的ViewModel

現在我有點卡在這里放置數據。 我使用隊列來存儲我的值(我總是希望顯示最后100個值)。 現在,我將什么放入模型中以及我將什么放入ViewModel中。

例如,我將包含數據點的Queue放入我的ViewModel中嗎? 如何正確觸發“每1秒獲取一些數據”的過程。 我想到了使用System.Threading.Threads.Timer。 我會把它放在哪里? 進入MockDataServiceAgent? 在這種情況下:如何從ServiceAgent訪問我的ViewModel以執行更新?

如果你有按鈕和東西,一切都很好,但是如果你的隨機事件是由“其他東西”而不是視圖觸發的呢?

您的Model是您的domain object ,它表示您正在處理的實際datainformation Model一個例子可能是包含makemodelcolour等的Car 。這里的主要內容是Model維護information而不是行為。

ViewModel是您的presentation separation層,它可以包裝一個或多個Model對象。 它是ViewModel公開命令和方法之間的粘合劑,它們維護View狀態,並且可以根據View上的actions改變Model的狀態。

您的data應由您的ModelModels維護。 它將是您的ViewModel ,它將公開該data並為您的View提供一種機制來使用它。 ObservableCollection是一種常見的機制,用於將data集合暴露給View因為它是動態的,並在添加,刪除或完全刷新項目時提供通知。

理想情況下,您不希望對象具有彼此強大的鏈接,因此要在對象之間進行通信,您可能需要考慮Mediator設計模式的某些實現。 大多數MVVM框架都有一些實現,可以作為MediatorEventAggregator消息總線。 這些提供了一種publishsubscribe機制,其中一個對象publishes包含一些數據的通知,一個或多個subscribed對象將接收該通知並相應地處理數據。 所涉及的對象都不知道誰是publishersubscriber或參與者,他們只知道Mediator實現。

您可以將包含數據的隊列放在ViewModel ,作為ObservableCollection ,然后在更改ObservableCollection時,它可以更新綁定到的任何內容。 最好保持ServiceAgentViewModel松散耦合之間的聯系,我建議使用SimpleMvvm的消息系統,如果有的話,我知道MvvmLight (另一個Mvvm工具包)有一個。 或者您可以使用Mediator模式自己構建一個。 或者,如果您不想使用Mediator,請使用IoC容器。 只需讓您的數據服務進程更新ObservableCollection ,這應該取消需要擔心事件(用於更新UI)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM