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