如何在VB.net中使用XmlnsDefinition

时间:2016-05-10 16:01:08

标签: wpf vb.net xaml

我有一个包含两个项目的解决方案:名为“WPFSample”的WPF示例应用程序和名为“ReferencedAssembly”的类库项目。 “WPFSample”引用“ReferencedAssembly”。

项目“ReferencedAssembly”包含几个类。每个类都有自己的命名空间,即“MyClassLibrary”或“MyClassLibrary.MyOtherTypes”。具有名称空间“MyClassLibrary”的示例类称为“电影”。

现在我想使用URL“http://schemas.emmbee.de/”将.NET命名空间映射到XAML命名空间。为此,我在“WPFSample”项目中向AssemblyInfo.vb添加了以下行,然后构建它:

Imports System.Windows.Markup

<Assembly: XmlnsPrefix("http://schemas.emmbee.de/", "ra")>
<Assembly: XmlnsDefinition("http://schemas.emmbee.de/",   "ReferencedAssembly.MyClassLibrary")>
<Assembly: XmlnsDefinition("http://schemas.emmbee.de/", "ReferencedAssembly.MyClassLibrary.MyOtherTypes")>

在XAML中,我添加了这样的命名空间定义:

<xmlns:ra="http://schemas.emmbee.de">

如果我想将“Movie”类与

一起使用
<ra:Movie/>

我收到错误,名称“电影”在名称空间“http://schemas.emmbee.de”中不存在。

如果我改为以这种方式添加命名空间定义:

<xmlns:ra="clr-namespace:ReferencedAssembly.MyClassLibrary;assembly=ReferencedAssembly">

一切正常。

XmlnsDefinition有什么问题?

1 个答案:

答案 0 :(得分:0)

我发现了它。命名空间映射

Imports System.Windows.Markup
<Assembly: XmlnsPrefix("http://schemas.emmbee.de/", "ra")>
<Assembly: XmlnsDefinition("http://schemas.emmbee.de/", "ReferencedAssembly.MyClassLibrary")>
<Assembly: XmlnsDefinition("http://schemas.emmbee.de/", "ReferencedAssembly.MyClassLibrary.MyOtherTypes")>

必须包含在&#34; AssemblyInfo.vb&#34;在汇编&#34; ReferencedAssembly&#34;中,而不是在汇编&#34; WPFSample&#34;。