从WPF MVVM项目中删除代码隐藏文件

时间:2010-08-04 06:11:08

标签: wpf mvvm code-behind

我正在使用MVVM模式编写WPF应用程序。我不需要为我的用户控件提供代码隐藏文件。优雅地删除这些文件的最佳方法是什么?

我可以创建一个用户控件类,然后我可以将这个类用于我的所有视图。 (更多信息:http://sondreb.com/blog/post/No-Code-Behind-for-MVVM.aspx

还有其他方法吗?

谢谢。

2 个答案:

答案 0 :(得分:5)

我认为这个问题最优雅的解决方案可能是忽略它。

项目中存在代码隐藏文件会让您几乎没有任何成本。并提出一些特殊的方案让它们消失只是创造了你必须记录和管理的东西。 (并弄清楚如何禁用,当你时需要一个用户控件的代码隐藏文件。因为迟早你会 - 例如,你不能实现拖动和放入你的视图模型。)

你为什么要这样做?

答案 1 :(得分:1)

我认为你不能避免使用反射来调用InitializeComponent(回答关于替代方法的问题)。避免代码隐藏有其优点和缺点,我看到的一个好处是,双击任何控件都不再有效,无论是在Blend还是Visual Studio中。这“迫使”我永远不会对某些行为进行“快速修复”。

另一方面,做“快速修复”以验证某些事情变得更加困难,所以这是一个你需要决定的交易。

在我目前的一个大型项目中,没有代码隐藏的问题,几乎没有错。 20%的XALM文件,其余的我还没有删除它们。

您可以实现拖放而不依赖于代码隐藏逻辑,我已经完成了我的Silverlight 4项目,该项目需要在没有窗口边框的情况下运行浏览器时处理某些操作

您可以从View Model访问视图,具体取决于您的MVVM实现和框架。虽然如果可能的话应该避免这种情况,但有时候这不是一个可行的解决方案。例如,Caliburn.Micro通过实现IViewAware接口并调用GetView方法,为您提供了一种访问视图的简洁方法。