我一直在 Windows Phone 应用程序中愉快地使用 DesignData,我希望用它来帮助在 VS2012/Blend for VS 中的 Metro 风格应用程序中可视化设计。
我已经尝试了很明显的方法:
<common:LayoutAwarePage
x:Name="pageRoot"
x:Class="MyRootNamespace.Views.EventView"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
IsTabStop="false"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyRootNamespace.Views"
xmlns:common="using:MyRootNamespace.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:bm="using:Bing.Maps"
d:DataContext="{d:DesignData Source=../SampleData/SpecialEventSampleData.xaml}"
mc:Ignorable="d">
SpecialEventSampleData.xaml 大致如下:
<local:SpecialEvent
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyRootNamespace.ViewModels"
EventName="Foo Fighters"
Description="This exclusive April Fools Gig will see Dave Grohl and the rest of the Foo Fighters rock out at this exclusive made up gig"
VenueName="Village Hall"
/>
它引用的类有一个公共(public)的、无参数的构造函数,但 Visual Studio 给出了一个错误:
Error Cannot create an instance of "SpecialEvent". C:...\MyRootNamespace.Windows\SampleData\SpecialEventSampleData.xaml
此外,我希望必须将构建操作设置为“DesignData”或类似的操作,但这似乎不是 Visual Studio 2012 中的一个选项?
我需要做什么才能获得 design time data在 VS2012/Blend 中工作?
最佳答案
SpecialEvent 是您的 ViewModel 吗?如果是这样,您能否在您的 XAML 中执行类似的操作(在您的 common:LayoutAwarePage 打开声明之后)?
<d:Page.DataContext>
<local:SpecialEvent>
</d:Page.DataContext>
然后从您的 common:LayoutAwarePage 中删除这一行:
d:DataContext="{d:DesignData Source=../SampleData/SpecialEventSampleData.xaml}"
我有与此类似的有效代码。
关于c# - 我如何使用 DesignData 来帮助开发 Metro 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638437/