2012-04-10 79 views
1

這是對MVVM概念的正確解釋嗎?我對WPF中MVVM概念的解釋(關於主持人)

  • 的DataTemplates - >查看
  • 的DependencyObject(控件,ListView控件等) - >視圖模型
  • 的DataContext - >型號

如果我要創造我自己的視圖模型,它會替換實際控制和需要明確的模板?

ViewModel中的'Model'這個詞並不是真正的模型(比如在DomainModel中)?

在模型中,我還添加了Presenters,我將其視爲實用工具類來提升視圖並將屬性等公開。你能否說ViewModel是一個自頂向下的表示(一個視圖的模型),並且Presenter更像是一個ModelView,一個自下而上的表示(模型的視圖)?

在這種情況下,我將不得不修改上面這樣:

  • ...
  • 的DataContext - >演示
  • 演示 - >型號

而且我不會」通常派生自DependencyObject來創建我自定義的演示文稿包裝器,但只能創建自定義的視圖控件的泛型模型,而不是模型的視圖?

回答

0

通常MVVM,就是要這樣解釋的:

查看 - >控件的DataTemplates等
型號 - >您的實際數據模型(數據庫,或其他)
視圖模型 - >自曝屬性和命令View可以用於DataBinding

這意味着,您的View將ViewModel作爲DataContext,ViewModel的屬性反映了Model的數據,ViewModel的命令對Model進行操作。在簡單情況下,Model和ViewModel有時是相同的。

可以在這裏找到一個概述:http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx
你也可以找到很多關於構建一個MVVM應用程序的例子,如果你尋找它。

+0

我認爲這個詞ViewModel是有誤導性的。 ModelView會更好嗎?這是一個模型的視圖,而不是一個視圖的模型。我認爲一個更像一個按鈕的視圖模型和該視圖嚴格地作爲圖形表示。我知道這是違背常見的解釋......但從我的角度來看,這更有意義。 – 2012-04-10 10:16:44

+1

我提到的文章解釋了它,以便ViewModel是該視圖的抽象,並且正如這樣的「視圖模型」。像按鈕之類的東西肯定會成爲我的視角。 – Botz3000 2012-04-10 11:01:36

+0

ViewModel(視圖模型)與演示者的相同行應包含UI的「概念表示」(屬性,行爲,狀態),而「具體表示」(實際可見像素)應該包含視圖本身。至少我是這麼理解的。總的來說,我發現WPF術語非常非常混亂(同時多餘且含糊不清)。 – heltonbiker 2013-01-14 23:15:42