2010-11-26 94 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)示例应用程序显示了如何从视图访问模型。