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

标签 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 模式)

最佳答案

.xaml.cs 结尾的文件是所谓的 View 的“代码隐藏”。此文件中的任何内容都与 View 紧密耦合。

如果你想遵循 MVVM 模式,你将在 ViewModels (.cs 文件),它们独立于 View 。

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

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

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

关于c# - .xaml.cs 和 ViewModels/ViewModel.cs 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57501934/

相关文章:

c# - 单击后台表单时,Datagridview 将消失

wpf - WPF MVVM中的键盘快捷键?

javascript - 扩展 MultiSelect 小部件会破坏 MVVM 中的值绑定(bind)

c# - 在 Windows 8 应用程序中使用 MessageBinder.SpecialValues 不起作用?

.net - Caliburn EventAggregator moq 验证 PublishOnUIThreadAsync 异步方法

c# - Windows Phone 7 上的 Protobuf-net

c# - 保存 '&' 登录 Cookie

c# - 发送 ajax POST 请求接收 GET 请求

c# - DataGridView 滚动点击后跳转到顶部

c# - 如何使用 WinRT Caliburn.Micro 将参数传递给导航 View 模型?