2012-04-30 74 views
0

我創建了一個Windows 8應用程序(但我懷疑任何使用Xaml的人都可以幫助我)。基本上歸結爲:一個包含產品列表的頁面,點擊產品打開詳細信息頁面。創建詳細視圖模型的最佳實踐(在Xaml中)

在我的作文根中,我解決了第一頁的視圖模型,並適當地設置了數據上下文,但我不確定在用戶選擇產品時將視圖模型傳遞到第2頁的最佳做法是什麼。

據我可以告訴我有以下選項: -

  • 第一視圖模型需要能夠與.create(產品)的方法創建 2頁的圖模型的抽象工廠,這將被傳遞到第一個視圖模型的構造函數
  • 讓第二個視圖模型實現一個帶產品屬性的接口,允許我使用屬性注入並將第二個視圖模型作爲參數傳遞給第一個視圖模型。
  • 創建一個服務定位器,我知道它被許多人認爲是反模式。

我有些失落,但我懷疑抽象工廠是正確的路要走,我希望得到正確的結果,因爲對象圖實際上是這樣的(產品 - >步驟 - >指令),所以任何重新工作可能需要相當多的時間,但它基本上意味着我的視圖模型,如果我沿着抽象工廠的路線將需要三個抽象工廠,並獲得初始產品清單服務(然後這是一個代碼味道給出了它有多少個參數!)。

回答

0

在想要解決運行時視圖模型(來自代碼)的情況下,工廠就是要走的路。

爲了方便起見,我還會考慮使用一些DI框架。我相信WinRT中不會有很多,但autofac應該與地鐵一起工作。

+0

這就是我的想法。我正在使用MetroIOC,所以沒關係。我只是想知道,如果在構造器中查看具有如此大量參數的模型是設計不好的標誌。 –

+0

恕我直言與依賴注入組合,更高數量的構造函數參數應該沒問題。無論如何你都可以在DI配置中設置它們。 當然,當數量大幅增長時,您應該重構。 –

0

依賴注入可能是如何做到這一點,如果你正在建立一個大的。就個人而言,我通常只是在Navigate()調用中傳遞參數,並使用OnNavigatedTo處理程序中的這些參數初始化視圖模型。

+0

那就是我一直在做的事情(但傳遞一個視圖模型)。我的意思是說謝謝你,因爲我一直在Windows 8中進行大量圖像處理,並且安靜地發佈了一些你的帖子幫助我解決了問題! –

+0

很高興聽到這一點。 –