我觉得我仍然看到很多指导和建议,说明视图优先方法是在您的应用程序中获得可混合性的最佳方式。但是,使用 d:DataContext、d:DesignData 和 d:DesignInstance,无论您的视图和视图模型如何连接在一起,Blendability 的问题都不是很容易解决吗?
使用 DesignInstance,您只需选择要在设计器中使用的具体 ViewModel 类型,就好像您拥有视图优先组合。事实上,使用 DesignInstance 实际上可以更好地分离关注点,而不是使用 IsInDesignMode 后空翻或创建一个默认构造函数只是为了在您的真实视图模型中提供设计支持——您可以从您的视图模型类型或通用接口类型继承来创建一个简单的“设计器” viewmodel,它完全受限于设计者。使用 DesignData,您甚至不必这样做:您只需在 XAML 中以声明方式创建一个假视图模型。
诚然,进行上述活动的前期成本很小,但结果实际上是比通过将设计数据与真实视图模型混合获得的结果更清晰的分离。有什么我想念的吗?为什么可混合性仍然是一个大问题?