2012-08-30 25 views
1

我有一個父視圖與相應的viewmodel。 該父視圖包含具有其自己的視圖模型的子控件。使用mvvm-light消息在非單體視圖模型的多個實例之間進行通信?

在過去,通過這種父 - 子類型關係,我通常將父視圖模型包含對子視圖模型的引用,然後通過事件與子代進行通信。

與其他非相關視圖模型進行通信時,我使用了消息傳遞。

在我目前正在研究的項目中,我們處於早期階段,使用mvvm-light,有人使用消息傳遞服務創建了類似的父子關係,這意味着我們更加鬆散耦合,這很棒。但是,我們沒有singleton視圖模型,因此我們可能會爲Customer A再有父視圖和子視圖以及其他實例,然後再爲Customer B提供其他實例。如果子視圖訂閱了一條消息 - 該消息被廣播由家長A,但A和B兒童都會收到,但我只想讓孩子A迴應。

這種場景的最佳做法是什麼? 我試圖獲得一些時間來比較消息傳遞方法與視圖模型引用和事件方法,但因爲一種方法主要通過綁定發生,我發現很難找出在哪裏放秒錶代碼。有沒有人知道這兩種方法之間是否存在很大的性能差異。

我目前的想法是,我們應該使用包含對childviewmodels的引用的父視圖模型,並利用事件和綁定進行通信。或者有更好的方法來做到這一點?

回答

1

我有同樣的問題,我使用事件來解決它在新的看法和viewmodels。

你也可以使用消息來標識應該接收它的視圖或視圖模型(一種id或類似的東西8-))。

+0

所以你有一個父視圖引用其子女?那麼你爲什麼選擇這種方式來傳遞消息呢?我有一種感覺,在這種情況下,這是正確的方式 - 但我試圖爲一個爲什麼一個方法而不是另一個方法提出一個論點。 – SteveL

+0

我這樣做是因爲我的應用程序有多個選項卡,並且可以多次打開相同的視圖,所以我認爲它有很多viewmodels將他們的消息與其他views-viewmodels消息區分開來。 – zapico

相關問題