我是.net和MVVM设计模型的新手。我现在卡住了,因为在我的一个视图的代码隐藏文件中,我需要将相应的模型作为对象。这里的关系怎么样?它是否可能,是“正确的方式”吗?
答案 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公共属性的控件数据绑定。