2011-04-18 59 views
3

我有一个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?) 这是构建操作吗? 我的整个方法是否有缺陷?

回答

1

“松散XAML文件”是一个与XAML 2009概念正交的概念。 松散XAML文件是仅在运行时加载的仅包含XAML(无代码)的文件。 http://wpf.2000things.com/2010/10/20/100-loose-xaml-files/ XAML 2009是XAML语言的一个版本和一组相应的模式。

要使.xaml文件“松动”,只需要停止正在编译的文件(在文件属性中)。 要加载松散的.xaml文件,您需要使用XamlReader.Load方法http://msdn.microsoft.com/en-us/library/system.windows.markup.xamlreader.load.aspx http://www.c-sharpcorner.com/uploadfile/37db1d/understanding-uncompiled-xaml-to-design-dynamic-ui-in-wpf/ 奇怪地看来XAML2009文件仍然使用2006架构。

+0

事情是,我不是在谈论将用于定义应用程序UI的XAML - 我想将该XAML文件用作设计数据,该数据仅由Visual Studio加载,从不在运行时使用。我无法以加载我的文件的方式修改Visual Studio。但你是对的 - 概念是正交的。 – 2012-11-10 17:47:07

+0

“我不是在谈论将用于定义应用程序UI的XAML”。我也没有。XAML是一种通用的序列化格式。将正常编译的XAML文件中的XAML2009文件作为DesignData引用时出现问题吗?如果是这样,你是不是指定它为'mc:Ignorable =“d”''d:DataContext =“{d:DesignData source =。/ loose.xaml}”'? – 2012-11-10 17:54:21

+0

自从我上次参与那个项​​目以来,已经有一年多的时间了。如果我没有记错的话,我认为在引用和使用设计数据时没有问题 - 问题在于Visual Studio XAML编辑器坚持强调在完全有效的XAML 2009标记中感知到的错误。 – 2012-11-10 21:50:50

相关问题