.xaml.cs 和 ViewModels/ViewModel.cs 有什么区别?

abo*_*was 1 c# mvvm caliburn.micro

我一直在关注这个使用 caliburn micro 的 MVVM 模式教程

https://www.youtube.com/watch?v=laPFq3Fhs8k

.xaml.cs 和 ViewModels/ViewModel.cs 有什么区别?

我看到我们将 shellview 的代码放在 ShellViewModel.cs 中,但是,例如,当我为 Button 选择事件处理程序时,visual studio 会将我带到 .xaml.cs 而不是 ViewModels/ViewModel。

我必须坚持一个文件还是每个文件都有不同的角色/责任?(考虑到我希望我的代码仍然遵循 MVVM 模式)

Dan*_*ues 5

以 结尾的文件.xaml.cs称为视图的“代码隐藏”。此文件中的任何内容都与视图紧密耦合。

如果您想遵循 MVVM 模式,您将在 ViewModels ( .cs files)上编写几乎所有 UI 与模型的交互(例如:单击按钮更改一些数据或从数据库中获取一些数据),它们是独立的从意见。

View 和 ViewModel 之间的唯一联系是 ViewModel 是DataContextView 的。换句话说,View 知道 ViewModel,但 ViewModel 对 View 一无所知。

事件处理程序通常不用于 MVVM 世界。您需要使用命令。但这是另一个问题/答案。

要记住的重要一点是,MVVM 主要解决两件事:关注点分离(UI 与 UI 逻辑)和软件的可测试性。