【问题标题】:Blendability with d:DataContext. What am I missing?与 d:DataContext 的可混合性。我错过了什么?
【发布时间】:2010-09-01 14:19:40
【问题描述】:

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

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

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

【问题讨论】:

  • 很好地回答了你的问题,我完全同意 :)

标签: wpf silverlight xaml expression-blend blendability


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2014-01-16
    相关资源
    最近更新 更多