2010-01-26 73 views
12

我在過去的兩年中一直在使用MVVM,自那時起它已經發展得更好。當我閱讀了數百篇MVVM文章和stackoverflow問題時,我注意到似乎有越來越多的文章首先將視圖/視圖模型關係和創建描述爲ViewModel或View。這些文章通常使用IoC或DI。我會包含一些鏈接,但作爲新的SO用戶,我只限於1.WPF - MVVM - 各種視圖創建技術的優缺點是什麼?

我最喜歡的技術是使用數據模板創建視圖,並將視圖模型中的視圖而不是視圖。我很少看到使用這種模式的文章。

<DataTemplate DataType="{x:Type ViewModels:DummyViewModel}"> 
    <Views:DummyUserControl DataContext="{Binding}"/> 
</DataTemplate> 

可測性和去耦似乎是這些「非DataTemplate的」 V-VM創建/關係設計和文章的主要焦點,他們常常與MEF或PRISM做。最終我想知道以下內容:

  1. DataTemplate視圖創建技術是否仍在使用或推薦?
  2. 視圖優先設計有什麼優點/缺點?
  3. 有什麼利弊/視圖模型第一次設計的缺點(與視圖注入)

我知道這些都是值得寬鬆的答案鬆動的問題。

如果他們不是MEF/PRISM相關的,那麼可以聯繫任何涵蓋這些主題的文章。越多越好。 (谷歌出現不少)

回答

2

1.是否還在使用或推薦DataTemplate視圖創建技術?

這是我在MVVM中操作的首選方法。我非常喜歡這種方法,因爲我將在下面指定。我在我的所有發展中都使用這個。

2.視圖優先設計的優點/缺點是什麼?

我在這裏找到的主要親是在設計時間體驗中更容易一些。設計師事先知道數據上下文,並且能夠更輕鬆地工作。

從我的角度來看,這裏主要的一點是,您在視圖和ViewModel之間添加了更緊密的耦合。選擇一個特定的模型來傳遞也很困難。

3.什麼是優點/視圖模型的第一個設計的缺點(與注入的視圖)

我個人喜歡這種方法。這樣,應用程序的「邏輯」一面就完全包含在ViewModel層中。通過使用ContentPresenters,您可以讓ViewModel輕鬆生成其他ViewModel,從而定義應用程序的「流程」。視圖可以很容易地由設計師改變。儘管如此,這裏的設計時間可用性略有下降 - 由於在設計時視圖並不真正瞭解VM的任何信息,因此會失去一些設計性。

+0

那麼這釘子我自己的經驗和意見100%。最近有很多關於使用容器來生成視圖和視圖模型的文章,我擔心我錯過了這條船。 您是否使用界面將視圖注入到viewmodel中?就我個人而言,我不希望我的視點模型完全參照視圖。 – user259509 2010-01-26 20:56:23

+0

我沒有提到MEF - 但我實際上也使用它。這對於處理上述邊界案例(即:服務)以及實際執行數據模板非常有用。您可以使用MEF從您的View中設置您的DataTemplates,而不必「污染」您的app.xaml,例如... – 2010-01-26 20:57:33

+0

您的博客(http://reedcopsey.com/)很棒,btw – user259509 2010-01-26 21:02:01