2014-03-27 126 views
1

目前我有一個應用程序,我創建了兩個區域的佈局。在兩個區域中,一個是標題,另一個是由網格數據填充的內容區域。木偶父母和孩子的意見

我有3個項目視圖來替換我的內容區域。現在我想知道如何存儲在第一個itemview中選擇的行的值並將其顯示在第三個視圖中。我嘗試的是我在佈局中創建了一個模型對象,並在所有視圖中使用該模型來設置和獲取,就像它是一個共享對象,任何視圖都可以使用layout.model.set()或layout.model.get )。

在佈局中創建模型並不是一個好的方法。共享數據的另一種方式是什麼?如果我使用單個視圖特定的模型對象,則在使用new運算符創建模型時,一個視圖中的數據集不能被另一個視圖訪問。

回答

2

我是發佈 - 訂閱模式的忠實粉絲,而木偶使用Event Aggregator實現這一點非常簡單。第一個視圖會發送一個事件,比如說「viewname:selectedrows」,它會傳遞與事件一起選擇的特定模型。它不需要知道誰正在訂閱該事件,它不應該在意。這只是揭露一個有趣的事件。第二個視圖可以在其事件處理程序中訪問該數據。

我喜歡基於事件的架構的原因是視圖保持鬆散耦合。而不是硬編碼對共享對象的引用,視圖是完全獨立的。你可以將它移動到應用程序的任何其他部分,它仍然可以工作。

+2

您可以請分享一些示例工作代碼,以瞭解它 – user3167895