2010-08-04 77 views

回答

1

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

另一方面,做“快速修复”来验证事情变得更加困难,所以这是一个交易 - 你必须做出决定。

在我的当前大项目之一中,我没有代码隐藏,大概没有代码隐藏的问题。 20%的XALM文件,其余的我还没有删除它们(还)。

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

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

5

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

您的项目中代码隐藏文件的存在使您几乎没有花费。想出一些特殊的方案让他们离开只是创建一些你必须记录和管理的东西。 (并且弄清楚如何禁用,当你到达需要一个用户控件的代码隐藏文件,因为迟早你会 - 例如,你不能实现拖放你的视图模型)

你为什么要这样对你自己?