是否可以在代码后面声明一个名称空间

Ger*_*ard 2 wpf xaml

是否可以声明一个名称空间:

<Window xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        x:Class="MyApp.MainWindow"/>
Run Code Online (Sandbox Code Playgroud)

在后面的代码中,例如在构造函数中.

public MainWindow()
{
    // ... here
}
Run Code Online (Sandbox Code Playgroud)

目的:减少冗长; 在一个地方声明名称空间并使用继承.

编辑:我尝试添加

[assembly: XmlnsDefinition("http://mycompany/myapp", "clr-namespace:MyApp.Controls")]
[assembly: XmlnsPrefix("http://mycompany/myapp", "myc")]
Run Code Online (Sandbox Code Playgroud)

AssemblyInfo.cs 但构建与错误"的命名空间前缀'MYC结束’没有定义".

所以我在与xaml文件所在的项目相同的项目中使用attirbutes.

Dan*_*zey 7

还有,你可以使用属性在你引用的程序集是一个开放的映射到你的代码命名空间的代码:

[XmlnsDefinitionAttribute("http://yournamespace/", "Your.Assembly.Namespace")]
Run Code Online (Sandbox Code Playgroud)

您可以包含多个这些属性,通常在您的属性中AssemblyInfo.cs,允许Xaml中的单个Uri命名空间引用多个代码命名空间.

例如,如果您在PresentationCore程序集中指向反编译器,则可以在程序集级别查看此类属性:

[assembly: XmlnsDefinition("http://schemas.microsoft.com/netfx/2007/xaml/presentation", "System.Windows.Ink")]
Run Code Online (Sandbox Code Playgroud)

这就是Uri导入如何映射到代码名称空间.

(完全披露:我已经从我在这里提出的类似问题的早期答案中得到了这个答案.)