2012-01-16 171 views
1

我試圖走我的路在MVVM世界,WPF,MVVM,MasterDetailPage,設計

我不會起訴任何框架,只有我在 http://blog.roboblob.com/tag/viewmodellocator/

看到我很喜歡那個帖子,它工作得很好。

我試圖創建一個包含3個用戶控件的主詳細視圖。 其中一人需要根據用戶輸入改變(如嚮導)

所以我必須通過後,我讀像

MasterDetailsView 
-> MenuView 
-> FirstPageView 
-> SliderView 

,每個視圖中創建自己的視圖模型,並將其綁定「全自動」 所以FirstPageView得到了他的viewmodel。

如果SliderView改變選擇我要綁定到FirstPageView一個新的視圖模型

如果FirstPageView了按鈕(下一頁)裏面點擊我要FirstPageView切換到SecondPageView和等。

我是有點失落,任何人都可以告訴我如何設計和解決這個問題?

我應該使用mvvm燈還是其他一些框架?我嘗試使用mvvm light,但缺乏示例使我回不起來。

任何指導將受到歡迎,謝謝。

回答

2

下面的語句是錯誤的:

每個視圖中創建自己的視圖模型,並將其綁定「全自動」,使 FirstPageView得到了他的視圖模型

你的觀點不應該負責的生命週期你的視圖模型。

使用MVVM模式時要記住的最重要的事情之一是應該可以在沒有您的視圖的情況下執行您的應用程序。在你的情況下,將創建一個視圖模型,密切反映你所期望的觀點。下面是僞代碼:

MasterDetailsViewModel 
{ 
    MenuViewModel 
    CurrentPageViewModel 
    SliderViewModel 
} 

通知很大的區別這裏,我們有一個CurrentPageViewModel,而不是一個視圖模型是具體到一個頁面。該屬性以FirstPageViewModel實例開始,然後隨着用戶從一個頁面前進到下一個頁面而改變。

有關如何做到這一點的細節,我會徹底約什 - 史密斯建議的文章:

WPF Apps With The Model-View-ViewModel Design Pattern

+0

謝謝,我會讀這個,一個問題,我怎能認爲blandability你的方法是什麼? – ibm123 2012-01-16 10:17:01

+0

雖然您可能需要添加設計時數據,但MVVM會提升可混合性。如果我的回答有幫助,請註冊或標記爲答案。 – ColinE 2012-01-16 10:49:12

+0

謝謝,但我不知道如何添加設計時間數據,你能告訴我怎麼樣? – ibm123 2012-01-16 11:50:37