我有一个xaml文件,我想用作DesignData(带有设计时创建类型)。 我也想在其中使用XAML 2009功能,但是Visual Studio似乎不接受它,抱怨我要使用的属性不存在于目标名称空间中。如何在Visual Studio中将XAML 2009用作设计数据?
这里是我的XAML文件看起来像:
<my:ViewModel
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib"
xmlns:my="clr-namespace:MyCompany"
>
<my:ViewModel.ViewCollection>
<!-- That part does not work, because it tells me that FactoryMethod and Arguments could not be found in the namespace for prefix 'x'. -->
<my:BusinessObjectView x:FactoryMethod="my:BusinessObjectView.Convert">
<x:Arguments>
<my:BusinessObject />
</x:Arguments>
</my:BusinessObjectView>
</my:ViewModel.ViewCollection>
<my:ViewModel.BoCollection>
<!-- Even though the x:TypeArguments syntax for defining objects only appears in XAML 2009, that part works fine - probably because the TypeArguments attribute already existed in that namespace. -->
<scg:List x:TypeArguments="my:BusinessObject">
<my:BusinessObject />
</scg:List>
</vm:ViewModel.BoCollection>
</my:ViewModel>
这里是片段描述生成操作的XML项目文件:
<DesignDataWithDesignTimeCreatableTypes Include="Path/To/File.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</DesignDataWithDesignTimeCreatableTypes>
那么,是什么问题? 它是名称空间前缀吗? (在这种情况下,我应该使用哪一个用于XAML 2009?) 这是构建操作吗? 我的整个方法是否有缺陷?
事情是,我不是在谈论将用于定义应用程序UI的XAML - 我想将该XAML文件用作设计数据,该数据仅由Visual Studio加载,从不在运行时使用。我无法以加载我的文件的方式修改Visual Studio。但你是对的 - 概念是正交的。 – 2012-11-10 17:47:07
“我不是在谈论将用于定义应用程序UI的XAML”。我也没有。XAML是一种通用的序列化格式。将正常编译的XAML文件中的XAML2009文件作为DesignData引用时出现问题吗?如果是这样,你是不是指定它为'mc:Ignorable =“d”''d:DataContext =“{d:DesignData source =。/ loose.xaml}”'? – 2012-11-10 17:54:21
自从我上次参与那个项目以来,已经有一年多的时间了。如果我没有记错的话,我认为在引用和使用设计数据时没有问题 - 问题在于Visual Studio XAML编辑器坚持强调在完全有效的XAML 2009标记中感知到的错误。 – 2012-11-10 21:50:50