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

从WPF MVVM项目中删除代码隐藏文件,wpf,mvvm,code-behind,Wpf,Mvvm,Code Behind,我正在使用MVVM模式编写WPF应用程序。我的用户控件不需要代码隐藏文件。优雅地删除这些文件的最佳方式是什么 我可以创建一个用户控件类,然后将该类用于我的所有视图。(有关更多信息:) 还有别的办法吗 谢谢。我认为解决这个问题最优雅的办法可能是忽略它 在项目中存在代码隐藏文件几乎不需要任何成本。想出一些特殊的方案让它们消失只会创造一些你必须记录和管理的东西。(当用户控件确实需要代码隐藏文件时,请找出如何禁用。因为迟早会禁用的,例如,您无法在视图模型中实现拖放。) 为什么要对自己这样做?我认为您不能

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

我可以创建一个用户控件类,然后将该类用于我的所有视图。(有关更多信息:)

还有别的办法吗


谢谢。

我认为解决这个问题最优雅的办法可能是忽略它

在项目中存在代码隐藏文件几乎不需要任何成本。想出一些特殊的方案让它们消失只会创造一些你必须记录和管理的东西。(当用户控件确实需要代码隐藏文件时,请找出如何禁用。因为迟早会禁用的,例如,您无法在视图模型中实现拖放。)


为什么要对自己这样做?

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

另一方面,做“快速修复”来验证某些东西会变得更加困难,所以这是一个你必须决定的交易

把代码隐藏起来没有什么错,在我当前的一个大项目中,大约20%的XALM文件没有代码隐藏,其余的我只是还没有删除它们

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

根据您的MVVM实现和框架,您可以从视图模型访问视图。虽然这应该尽可能避免,但有时这并不是一个可行的解决方案。例如,Caliburn.Micro通过实现IViewAware接口并调用GetView方法,为您提供了一种访问视图的干净方法