2011-06-20 43 views
0

我目前有一個相當直接的應用程序,我第一次嘗試使用Josh Smiths類的MVVM,並一直在考慮使用Unity將它移動到Prism v4。然而,我似乎對如何將模型數據在不同模塊中分離時實際傳遞給相關視圖模型感到困惑。棱鏡提供模型來查看模型混淆

該應用程序本身有一個Document對象的集合,每個對象都包含一個對第三方視頻API實例的引用以及一系列描述和註釋視頻的元數據。

我已經將視頻處理元素寫入了一個單獨的模塊,該模塊需要來自IVideoService的數據。類似地,文檔將在不同的模塊中由IDocumentservice提供,該文檔服務將返回文檔集合,選定的文檔等。

我引用Unity中的IDocumentService實例,以便它可以由任何模塊解析。然而,當我看到文檔被改變時,我沒有看到我如何提取相關的IVideoService來顯示。我不想在視頻模塊中包含任何文檔模塊的依賴關係,所以我假設我只註冊一個IVideoService實例併發布一些刷新事件..以便更新視頻模塊的視圖。

但是,如果我有能力同時顯示兩個或多個文檔,那麼解決方案將不起作用。

在我以前的非棱鏡應用程序中,我的視圖模型具有鏡像模型層次結構的層次結構,並且所有操作都是使用綁定和數據模板完成的。

這似乎不是在棱鏡中完成每個模塊初始化並聲明其出現位置的方式。查看各種演示應用程序和代碼並沒有解決這個問題,所以我懷疑有一些根本性的誤解。

任何啓蒙感激!

問候

回答

0

什麼正在查看文檔時引發一個事件得到改變?該事件可以通過相關的IVideoService作爲事件參數的一部分。

+0

我曾考慮過,但如果我打開2個文檔會發生什麼情況。我無法在全球發佈該活動,因此我仍然需要在相關的文檔和視頻模塊之間進行一些連線。這是讓我困惑的事情。即在框架中的特定實例之間佈線所述事件。 – rjw

+0

@rjw在您的事件參數中添加第二個參數,指定哪個文檔被更改。在過去,如果第二個參數等於某個值(在這種情況下,我正在使用'this'),那麼事件纔會被處理,所以我做了類似的事情。 – Rachel

+0

有道理。我認爲我在哀嘆我的數據層級丟失,並假設我錯過了框架中的某些東西。但我認爲這樣的事件是保持模塊依賴關係的唯一方法,等等。謝謝 – rjw