5

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

使用 DesignInstance,您只需选择要在设计器中使用的具体 ViewModel 类型,就好像您拥有视图优先组合。事实上,使用 DesignInstance 实际上可以更好地分离关注点,而不是使用 IsInDesignMode 后空翻或创建一个默认构造函数只是为了在您的真实视图模型中提供设计支持——您可以从您的视图模型类型或通用接口类型继承来创建一个简单的“设计器” viewmodel,它完全受限于设计者。使用 DesignData,您甚至不必这样做:您只需在 XAML 中以声明方式创建一个假视图模型。

诚然,进行上述活动的前期成本很小,但结果实际上是比通过将设计数据与真实视图模型混合获得的结果更清晰的分离。有什么我想念的吗?为什么可混合性仍然是一个大问题?

4

1 回答 1

4

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

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

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

于 2010-09-01T15:29:58.860 回答