在基于MVVM的应用程序中,我有什么选择在设计时提供ViewModel数据,因此我们的设计人员实际上可以在Blend3(和VS 2008)中看到一些东西。你好吗?我可以利用mc:可以忽略不计吗?
答案 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; ...
运作良好。