3

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

4

2 回答 2

4

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

样本数据 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();
}
于 2009-08-26T18:17:49.450 回答
3

Using VS2010 you can use Design-Time attributes (works for both SL and WPF). I usually have a mock data-source anyway so it's just a matter of:

  • Adding the namespace declaration

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

  • Adding the mock data context to window/control resources

    <UserControl.Resources> <ViewModels:MockXViewModel x:Key="DesignViewModel"/> </UserControl.Resources>

  • Setting design-time data context

    <Grid d:DataContext="{Binding Source={StaticResource DesignViewModel}}"> ...

Works well enough.

于 2011-03-20T12:31:03.957 回答