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

时间:2009-08-26 15:41:52

标签: mvvm blend design-time

在基于MVVM的应用程序中,我有什么选择在设计时提供ViewModel数据,因此我们的设计人员实际上可以在Blend3(和VS 2008)中看到一些东西。你好吗?我可以利用mc:可以忽略不计吗?

2 个答案:

答案 0 :(得分:4)

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

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

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

<navigation:Page DataContext={StaticResource MyFakeDesignData}

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

private void Home_Loaded(object sender, RoutedEventArgs e)
{
    DataContext = new MyRealViewModel();
}

答案 1 :(得分:3)

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

  • 添加名称空间声明

    的xmlns:d = “http://schemas.microsoft.com/expression/blend/2008”

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

    &LT; UserControl.Resources&GT;    &lt; ViewModels:MockXViewModel x:Key =“DesignViewModel”/&gt; &LT; /UserControl.Resources>

  • 设置设计时数据上下文

    &lt;网格d:DataContext =“{Binding Source = {StaticResource DesignViewModel}}”&gt; ...

运作良好。