谁能解释一下 View 和 ViewModel 是如何连接的?我在任何地方都找不到引用 ViewModel 的 View 的 xaml 或 xaml.cs,也找不到引用 View 的 ViewModel.cs 文件中的任何内容,但它们以某种方式连接,并且将 ViewModel 的成员绑定(bind)到 View 工作.
此外,在每个构造函数中,只有 View 的 InitializeComponent 和 ViewModel 的基本构造函数(没有 View 的声明/定义)。
谢谢!
最佳答案
这里有多种选择。
某些东西 必须将 View 的 DataContext
设置为 ViewModel 的一个实例。这里有很多选项:
- 这可以直接在 xaml 中完成(View 只是直接实例化 ViewModel)。
- 这可以在 View 的构造函数中完成 (
this.DataContext = new MyViewModel();
) - 这可以通过
DataTemplate
处理
- “协调”类可以将它们连接在一起(即:一个单独的“演示者”类可以构造两者并适本地设置
DataContext
)
最常见的是让 View 在 xaml 中定义 VM(View-first),或者让一切都基于以 ViewModel 为中心的观点,并让 WPF 基于绑定(bind)的 VM 自动创建 View (ViewModel 优先)。
许多工具包都使用前一种方法,例如 MVVM Light .后一种方法是我在 MVVM blog series 中使用的方法, 并被其他一些工具包使用。
关于c# - View 如何知道在 WPF 中使用什么 ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141692/