我正在
WPF / WCF / NHibernate / etc中开发一个大型应用程序.并且已经实现了MVP模式(尽管这个问题仍然与MVC相关)作为核心架构.
在核心架构方面(控制器,视图等),扩展和添加功能以及返回并对某些零碎进行更改是非常自然的.
但有时我创建的自定义用户控件的代码隐藏感觉就好像它“破坏”了实现的MVC / MVP范例,因为代码涉及设计和设计中的泄漏问题泄漏代码.让我再次澄清一下,这仅适用于用户控件.我个人认为这个代码隐藏模型(对于ASP.NET和WPF)都是一个“坏事”,但不管我的意见如何,我都坚持下去.
在这种情况下,您对最佳实践的建议是什么?你如何处理这些问题?你是否解决了自定义控件的代码隐藏问题,如果是这样的话?
最佳答案 由于您使用的是WPF,因此您应该真正研究
MVVM (Model-View-ViewModel)模式.它是
Martin Fowler讨论的
Presentation Model(PM)模式的一种形式.WPF非常以绑定为导向,为XAML提供了一个非常强大和丰富的数据绑定框架.使用MVVM,您可以完全和完全地将ViewModel与视图分离,从而实现真正的POCO UI开发,从而最大程度地分离关注点和单元可测试性.
使用MVVM,您将能够从驱动它们的代码中模块化和分离所有视图,包括Windows,UserControls等.除了为您自动生成的内容之外,Code Behind中应该没有逻辑.有些事情起初有点棘手,但以下链接应该让你开始.要学习的关键事项是MVVM模式本身,数据绑定,路由事件和命令以及附加行为:
> MVVM
> Data Binding
> Attached Behaviors
> Attached Commands (VERY USEFUL!)
> Routed Commands
> Routed Events
WPF MVVM预先有一点学习曲线,但是一旦你克服了最初的障碍,你永远不会想要回头看. WPF和MVVM的可组合性,丢失耦合,数据绑定和原始功能令人惊讶.你的用户界面比以往任何时候都有更多的自由,如果有的话,你很少会为了背后的代码而烦恼.