我正在使用WPF创建一个桌面应用程序。 Caliburn MVVM。在我的观看"目录,我有几个遵循这种模式的文件:
ExampleView.xaml< =这是实际的UI设计......
ExampleView.xaml.cs< =这里有什么?
然后我还为每个视图都有一个ViewModel。
有人可以解释在ExampleViewModel.cs中应该包含哪些内容以及ExampleView.xaml.cs中应该包含哪些内容?看起来我的ViewModel继承自" Screen",我的ExampleView.xaml.cs继承自" Window"。
谢谢!
答案 0 :(得分:1)
这是视图的“Codebehind”。许多人使用代码隐藏来与他们的视图进行交互。但是,许多人更喜欢使用名为MVVM的解耦方法,而不是使用视图模型。 MVVM架构对单元测试更加友好,更易于代码重用。
总而言之,ExampleView.xaml.cs用于与视图上的控件进行交互。
答案 1 :(得分:1)
好吧,您的观点可以从Window
或UserControl
或其他WPF类继承。在MVVM中,视图是用户界面,视图模型是公开属性和命令的视图的抽象。 MVVM不是MVC模式的控制器,也不是MVP模式的演示者,而是有一个绑定器。在视图模型中,绑定器调解视图和数据绑定器之间的通信。
但是您的视图可以包含不依赖于ViewModel数据的UI逻辑。此逻辑可以作为View(和内部控件)的事件处理程序添加到[Name] View.xaml.cs文件中,例如OnLoad
,OnResize
。它调用Code behind。
答案 2 :(得分:0)
我刚刚使用MVVMLight Nuget写了几个WPF应用程序,我的所有[视图] .aspx.cs只有自动生成的代码。我不需要在视图代码中添加任何内容,因为它在我的视图模型中。我还将一些网络应用程序和几个Windows 8商店应用程序转换为MVVM,几乎完全从后面的视图代码中删除了所有代码。
我唯一一次在视图代码中添加了一些内容,可能是在非常孤立的情况下实例化视图模型以与该视图一起使用。
在那里有很多争论是否有零代码来最好地遵循MVVM或在后面的代码中有一些代码是可以的。个人偏好,基于工作量,复杂性,时间表等。