是否可以声明名称空间,如:
<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MyApp.MainWindow"/>
在代码背后,例如在构造函数中。
public MainWindow()
{
// ... here
}
目的:减少冗长;在一个地方声明名称空间并使用继承。
编辑:我尝试添加
[assembly: XmlnsDefinition("http://mycompany/myapp", "clr-namespace:MyApp.Controls")]
[assembly: XmlnsPrefix("http://mycompany/myapp", "myc")]
到AssemblyInfo.cs
但构建完成时出现错误“名称空间前缀”myc“未定义”。
所以我在与xaml文件所在的项目相同的项目中使用attirbutes。
答案 0 :(得分:7)
引用程序集的代码中有an attribute you can use将Uri映射到代码名称空间:
[XmlnsDefinitionAttribute("http://yournamespace/", "Your.Assembly.Namespace")]
您可以在AssemblyInfo.cs
中包含多个这些属性,允许Xaml中的单个Uri命名空间引用多个代码命名空间。
例如,如果您将反编译器指向PresentationCore
程序集,则可以在程序集级别查看此类属性:
[assembly: XmlnsDefinition("http://schemas.microsoft.com/netfx/2007/xaml/presentation", "System.Windows.Ink")]
这是Uri导入映射到代码名称空间的方式。
(完全披露:我之前的回答是here提出的类似问题。
答案 1 :(得分:1)
不,命名空间是XML standard的一部分,与xaml / .Net
无关如果您的名称空间是在后面的代码中声明的,那么您的XAML将不是有效的XML文档。