在Silverlight中,是否可以设置自定义控件的默认xmlns名称?
默认情况下,每次我在窗口上拖放一个自定义控件时,程序集和控件都会自动添加到XAML中:
...
xmlns:my="clr-namespace:MyAssemblyName;assembly=MyAssemblyName"
...
<my:MyCustomControl Name="whatever"/>
Everthing工作正常,我想用其他东西(MyAssemblyName)替换“my”命名空间而不用手动编辑XAML。
答案 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命名空间。