Silverlight自定义控件默认xmlns

时间:2011-01-25 19:02:01

标签: silverlight xaml wpf-controls xml-namespaces

在Silverlight中,是否可以设置自定义控件的默认xmlns名称?

默认情况下,每次我在窗口上拖放一个自定义控件时,程序集和控件都会自动添加到XAML中:

...
xmlns:my="clr-namespace:MyAssemblyName;assembly=MyAssemblyName"
...
<my:MyCustomControl Name="whatever"/>

Everthing工作正常,我想用其他东西(MyAssemblyName)替换“my”命名空间而不用手动编辑XAML。

1 个答案:

答案 0 :(得分:4)

您应该能够控制XmlnsPrefixAttribute程序集属性使用的前缀。通常将它放在项目的Properties文件夹中的AssemblyInfo.cs中。当你在它的时候,你也可以添加一个XmlnsDefinitionAttribute来解除你的Xaml名称空间与程序集和.NET命名空间的连接。

 [assembly: XmlnsDefinition("http://schemas.yourorganisation.com/controls", "MyAssemblyName")]
 [assembly: XmlnsPrefix("http://schemas.yourorganisation.com/controls", "myc")]

现在当您从工具栏中删除控件时,您应该: -

 ...
 xmlns:myc="http://schemas.yourorganisation.com/controls"
 ...

 <myc:MyCustomControl Name="whatever" />

现在,您可以创建包含控件的多个.NET命名空间,并在AssemblyInfo中添加多个XmlnsDefinition条目,将它们全部映射到相同的xml命名空间,从而使用相同的前缀。您甚至可以创建多个控件库项目,这些项目都映射到同一个xml命名空间。