为什么有XAML名称空间是URLS?

Cal*_*nus 15 xaml namespaces

在代码顶部的Silverlight/WPF xaml中,您可以获得命名空间/导入类型声明.我可以很容易地理解这些声明如何指向程序集,以便可以从中加载类型等.我不明白(以及到目前为止我还没有想到的)是这些名称空间在指向网址时如何工作,例如

http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit

查看此URL会给我一个错误,所以不告诉我任何事情.

Dan*_*zey 20

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

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

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

这使您的命名空间声明更紧凑(因为您可以省略程序集名称).它还允许您在引用的程序集中重新组织名称空间时具有一定的灵活性,而不会破坏您的标记.

编辑:例如,如果将Reflector指向PresentationCore程序集,则可以在程序集级别查看此类属性:

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

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