有人可以解释View和ViewModel是如何连接的吗?我找不到引用ViewModel的View的xaml或xaml.cs,也没有找到引用View的ViewModel.cs文件中的任何内容,但它们以某种方式连接,并且从ViewModel到View的绑定成员工作.
此外,在每个的构造函数中,只有View的InitializeComponent和ViewModel的基本构造函数(没有View的声明/定义).
谢谢!
Ree*_*sey 32
这里有各种选择.
有些东西必须将View设置DataContext
为ViewModel的一个实例.这里有很多选择:
this.DataContext = new MyViewModel();
)中完成DataTemplate
DataContext
适当的设置)最常见的是让View在xaml中定义VM(View-first),或者以ViewModel为中心的观点,让WPF根据绑定的VM自动创建View(ViewModel-第一).
前一种方法是许多工具包使用的方法,例如MVVM Light.后一种方法是我在MVVM博客系列中使用的方法,并被其他一些工具包使用.
将视图连接到视图模型的"干净"方式将是......
创建视图时,对于每个视图,将其DataSource设置为其视图模型:
例如
public class App
{
private void OnAppStart()
{
var model = new MainModel();
var vm = new MainVM();
var view = new MainWindow();
vm.Model = model;
view.DataSource = vm;
view.Show();
}
}
Run Code Online (Sandbox Code Playgroud)
当您正在查看的模型发生更改时,请更新VM:
public class MainVM
{
private void OnSelectedModelItemChanged()
{
this.SelectedItem = new ItemVM();
this.SelectedItem.Model = this.SelectedModelItem;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用数据模板使视图为每个VM选择正确的子视图.
归档时间: |
|
查看次数: |
21807 次 |
最近记录: |