View中的MVVM访问模型

时间:2010-11-26 16:59:09

标签: c# .net mvvm

我是.net和MVVM设计模型的新手。我现在卡住了,因为在我的一个视图的代码隐藏文件中,我需要将相应的模型作为对象。这里的关系怎么样?它是否可能,是“正确的方式”吗?

4 个答案:

答案 0 :(得分:5)

View应该访问ViewModel,它包装Model,将其隐藏在View中。如果需要从View访问Model的属性,请让ViewModel将它们公开为View可以绑定的属性。

答案 1 :(得分:2)

MVVM不禁止View直接访问Model。这是MVVM社区中常见的误解。

您的ViewModel可以公开底层模型,以便View可以直接访问模型。

结合:

{Binding Model.Title}

代码背后:

((MyViewModel)DataContext).Title

WPF Application Framework (WAF) ViewModel (EmailClient)示例应用程序显示了如何从视图访问模型。

答案 2 :(得分:1)

ViewModel应该完全不了解视图。 View应仅使用DataBinding,因此不了解模型或ViewModel。

如果您需要与视图进行交互,则必须通过 DataBinding 进行交互。只有在特殊情况下,您才应该使用代码隐藏。

因此,ViewModel 上有属性,视图中有绑定

答案 3 :(得分:0)

public partial class MyView : Window
{
     private MyViewModel aModel;

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

现在视图将更改绑定到ViewModel公共属性的控件数据绑定。