为 Blend 和 VS 提供设计时 ViewModel 数据

Posted

技术标签:

【中文标题】为 Blend 和 VS 提供设计时 ViewModel 数据【英文标题】:providing designtime ViewModel data for Blend and VS 【发布时间】:2009-08-26 15:41:52 【问题描述】:

在基于 MVVM 的应用程序中,我必须在设计时提供哪些选项来提供 ViewModel 数据,这样我们的设计人员才能在 Blend3(和 VS 2008)中实际看到一些东西。你是怎么做到的?我可以以某种方式使用 mc:ignorable 吗?

【问题讨论】:

【参考方案1】:

是的,Expression Blend 可以帮助您解决这个问题。使用“数据”选项卡创建与生产数据具有相同形状的示例数据。创建数据源时,请务必取消选中“在应用程序运行时启用示例数据”。

Sample Data http://www.smips.com/brad/***/design-model1.jpg

创建示例数据后,将页面的 DataContext 设置为 XAML 中的示例数据。这将让设计人员在 Blend 中打开页面时看到示例数据。

<navigation:Page DataContext=StaticResource MyFakeDesignData

在 Loaded 处理程序的代码中,编写代码以将 DataContext 设置为真实模型。由于此代码只会在应用程序运行时运行,并且您已告知示例数据在应用程序运行时不可用,这意味着正在运行的应用程序将获取真实数据。

private void Home_Loaded(object sender, RoutedEventArgs e)

    DataContext = new MyRealViewModel();

【讨论】:

【参考方案2】:

使用 VS2010,您可以使用 Design-Time attributes(适用于 SL 和 WPF)。无论如何,我通常都有一个模拟数据源,所以这只是一个问题:

添加命名空间声明

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

将模拟数据上下文添加到窗口/控件资源

设置设计时数据上下文

...

效果很好。

【讨论】:

以上是关于为 Blend 和 VS 提供设计时 ViewModel 数据的主要内容,如果未能解决你的问题,请参考以下文章

vs2010和blend 4都装好了,我怎么将Blend 4画的东西移植到我的VS2010 WPF应用程序中呢,请高手指点,谢谢

在同一个文件上使用 Blend 和 VS

安装了VS2010后和SilverLight4之后还有没有必要安装blend吗?

在 Blend 和 VS 2010 中编辑附加属性

Blend For VS2017的使用简述(上)

Blend + VS 2012 Ultimate Form 在 VS 中缺失