2012-09-15 45 views
11

我已經開始瞭解Windows 8商店應用程序。Windows 8商店應用程序中的MVVM死了嗎?

我記得早些時候Silverlight和WPF編程人員改編了MVVM的概念,現在我不確定我是否應該使用當時學到的東西。

我加入GalaSoft.MvvmLight參考,並創建了一個視圖模型,並把它添加到我的XAML通過的建議:

DataContext="{Binding Source={StaticResource Locator}, Path=Welcome}" 

它看起來像微軟列入LayoutAwarePage某種模型視圖實現的:

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState) 
{ 
    // TODO: Assign a bindable collection of items to this.DefaultViewModel["Items"] 
    // DefaultViewModel["WelcomeTiles"] = WelcomeTiles; 
} 

如果已設置以下datacontext,則可以訪問它們。

<DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}" /> 

所以現在我不能確定我是否應該創建ModelViews我記得他們,用MVVMLight或只添加代碼隱藏文件到DefaultViewModel數據。

兩種人都有什麼經歷?我剛剛開始,我的下一個目標是在GridView中單擊項目時添加處理程序 - 以上路徑中的哪一個可以輕鬆完成?

回答

15

不,MVVM永遠不會死!

Model-View-ViewModel是一種設計模式,因此它不依賴於特定的框架或實現。但是,這是一種UI設計模式,最適用於支持數據綁定的UI框架。

Windows 8 Metro應用程序包括XAML和一個非常類似於Silverlight和WPF的綁定框架。出於這個原因,MVVM是管理代碼的絕佳選擇。

您在LayoutAwarePage中發現的代碼在this blog post中描述。它試圖通過提供各種存根實現來使Windows 8 Metro應用程序的開發變得更加容易。該頁面包括一個DefaultViewModel,這是一個可觀察的字典。

就我個人而言,我不會使用它!

+1

我一直在尋找更多地進入它。現在我正在創建一個新頁面時,還要創建一個ViewModel和一個數據綁定。但是對於概念教學和快速演示,我發現只需單擊Visual Studio模板並使用defaultViewModel即可。感謝您的意見。 –

3

MVVM在Windows 8 Metro應用程序中並未死亡。

我們沒有在我們的應用程序中使用MvvmLight,但是您需要的基本組件,如綁定到ViewModel屬性,在ViewModel和INotifyPropertyChanged中使用ICommands都可以進行非常小的更改(如果有)。最近發佈了nice sample。它沒有明確地說MVVM,但它有你需要的開始。 Josh Smith的article當然仍然有用。

2

我推薦http://stylemvvm.codeplex.com,它是從頭開始寫的,支持Metro項目(C#,C++/CX,HTML/JS)。它包括完整的國際奧委會,執行ICommand &附加命令行爲,瓷磚服務,徽章,敬酒和魅力。它還包括一個很好的Mediator類,它是調度員意識到的。加上一些視覺工作室模板來幫助你開始。

注:因爲我寫吧:)

我可能會偏向
+1

我會給你一個upvote現在,並檢查出來:) –

4

都能跟得上MVVM是不是死了,還是蠻活着!

MVVM的ColinE定義恢復得很好。實際上,MVVM基本上是一種設計模式,並不依賴於特定的框架。儘管大多數與XAML應用程序編程[WPF,Silverlight,WP 7和WinRT ...]一起工作過的大多數人都會同意MVVM真正實現了清晰的SOC關注分離問題, 之間的GUI和後端邏輯的發展。

我已經親自將Nunt中的Laurent Bugnion的MVVMLight包與WinRT結合使用,儘管您可以自由使用任何您感到輕鬆的其他MVVM包或選項。

如果您需要進一步的樣品裁判,我會邀請你吉爾Cleeren有「在Windows 8商店MVVM」一起來看看下面的 記錄在研討會的

http://www.silverlightshow.net/video/MVVM-in-Win8-Webinar.aspx

相關問題