与d:DataContext的可混合性。我错过了什么?

时间:2010-09-01 14:19:40

标签: wpf silverlight xaml expression-blend blendability

我觉得我仍然看到很多指导和建议,说明视点优先方法是在应用程序中获得Blendability的最佳方法。但是,使用d:DataContext,d:DesignData和d:DesignInstance,无论您的视图和视图模型如何连接在一起,Blendability的问题都不容易解决?

使用DesignInstance,您只需选择要在设计器中使用的具体ViewModel类型,就好像您有视图优先组合一样。实际上,使用DesignInstance实际上允许更好地分离关注点,而不是执行IsInDesignMode后空翻或仅为实际视图模型中的设计支持创建默认构造函数 - 您可以从viewmodel类型或从公共接口类型继承创建一个简单的“设计师”视图模型,它完全受设计师约束。使用DesignData,您甚至不必这样做:您可以在XAML中以声明方式创建伪视图模型。

确实,在进行上述活动时需要很少的前期成本,但结果实际上比通过将设计数据与真实视图模型混合得到的结果更清晰。有什么我想念的吗?为什么Blendability仍然是一个如此重要的问题?

1 个答案:

答案 0 :(得分:4)

如果您有整个视图的模型数据,那么使用d:DataContext,d:DesignData和d:DesignInstance应该为您提供可混合性。

因此,对于您的问题的答案,简而言之,无论您如何在运行时使用视图(首先查看视图或视图模型),您仍然可以具有可混合性。如果在运行时版本中有一些viewmodel逻辑或初始化,则应确保在设计时实例中使用相同的模型。

许多人试图通过创建基本上两个视图模型来找到一种不需要复制工作的方法。我同意它确实提供了更好的分离。