2016-01-06 46 views
4

我正在使用WPF & Caliburn MVVM创建桌面应用程序。在我的“意见”的目录,我有遵循此模式的几个文件:什么应该在[名称] View.xaml.cs文件?

ExampleView.xaml < =这是实际的UI设计...

ExampleView.xaml.cs < =发生的事情吗?

然后我也有每个视图的ViewModel。

有人可以解释ExampleViewModel.cs应该怎么做,以及ExampleView.xaml.cs应该怎么做?它看起来像我的ViewModel继承自“屏幕”,其中我的ExampleView.xaml.cs继承自“窗口”。

谢谢!

回答

1

这就是您的“Codebehind”视图。许多人使用代码隐藏与他们的观点进行交互。但是,许多人更喜欢使用视图模型的称为MVVM的解耦方法。 MVVM体系结构更易于进行单元测试,并且更易于代码重用。

因此,总之,ExampleView.xaml.cs用于与视图上的控件进行交互。

1

那么,您的观点可以从WindowUserControl或其他WPF类继承。在MVVM中,视图是用户界面,视图模型是暴露公共属性和命令的视图的抽象。 MVVM不是MVC模式的控制器,而是MVP模式的主持人,MVVM有一个活页夹。在视图模型中,资料夹介于视图和资料资料夹之间的通讯。

但是您的视图可以包含不依赖于ViewModel数据的UI逻辑。这个逻辑可以作为View的(和内部控件的)事件处理程序添加到[Name] View.xaml.cs文件中,例如OnLoad,OnResize。它叫Code behind

0

我刚刚写了一个使用MVVMLight Nuget的WPF应用程序,所有的[views] .aspx.cs都只有自动生成的代码。我不需要在视图代码中放置任何东西,因为它在我的视图模型中。我还将一些Web应用程序和几个Windows 8商店应用程序转换为MVVM,并几乎完全消除了后面视图代码中的所有代码。

我唯一把事情放在视图代码背后的可能是在非常孤立的情况下实例化一个视图模型以与该视图一起进行。

关于是否有零代码最好遵循MVVM或在代码背后有一些代码是好的,有很多争论。个人喜好和基于工作量,复杂度,时间表等。

相关问题