2010-11-26 142 views
5

我是.net和MVVM designmodel的新手。我現在卡住了,因爲在我的一個視圖的代碼隱藏文件中,我需要將相應的模型作爲對象。這裏的關係如何?是否有可能,是否是「正確的做法」?MVVM從視圖訪問模型

回答

5

視圖應該訪問包裝模型的ViewModel,從視圖中隱藏它。如果您需要從視圖中訪問模型的屬性,請使用ViewModel將它們公開爲View可以綁定到的屬性。

+0

好的,我覺得答案就是這樣的。但我仍然有一些問題。 當我點擊類型A的視圖1我希望它保存其viewmodel中的相應模型。當我點擊類型A的視圖2時,我也希望它在相同的viewmodel中保存其對應的模型。到目前爲止,我只知道如何自我保存(視圖)而不是模型:/ – Andreas 2010-11-26 17:37:39

1

ViewModel應該完全不知道該視圖。 View只能使用DataBinding,所以不知道模型或ViewModel。

如果您需要與視圖交互,則全部必須通過DataBinding。只有在特殊情況下,您應該訴諸代碼隱藏。

因此有一個財產上的ViewModel綁定它的視圖。

+0

他想從視圖訪問模型,而不是相反。 – 2010-11-26 17:03:53

0
public partial class MyView : Window 
{ 
    private MyViewModel aModel; 

    public MyView() 
    { 
     InitializeComponent(); 
     aModel = new MyViewModel(); 
     this.DataContext = aModel(); 
} 

現在視圖將更改其綁定到ViewModel的公共屬性的控件數據綁定。

1

MVVM不禁止View直接訪問模型。這是MVVM社區中常見的誤解。

您的ViewModel可以公開底層模型,以便View可以直接訪問該模型。

裝訂:

{Binding Model.Title} 

代碼背後:

((MyViewModel)DataContext).Title 

WPF Application Framework (WAF)視圖模型(EmailClient)示例應用程序顯示瞭如何從視圖訪問模型。