XAML命名空间http://schemas.microsoft.com/winfx/2006/presentation是如何被映射到.NET命名空间(System.Windows.Controls)的?该映射及其他WPF命名空间的映射是在WPF程序集中硬编码完成的,里面有好几个XmlnsDefinitionAttribute自定义特性的实例。另外,schemas.microsoft.com是个无效网址,这个网址仅仅是一个人设定的字符串,就像其它命名空间一样。
XAML文件的根元素必须指定至少一个命名空间,用于验证自己和子元素。WPF的设计者可以在根元素或子元素上声明额外的XML命名空间,但每一个命名空间下的标识符都必须有一个唯一的前缀,如:
xmlns:x=http://schemas/microsoft.com/winfx/2006/xaml
隐式.NET命名空间
WPF将下面所有的.NET命名空间映射到XML命名空间http://schemas.microsoft.com/winfx/2006/xaml/presentation
System.Windows
System.Windows.Automation
System.Windows.Controls
System.Windows.Controls.Primitives
System.Windows.Data
System.Windows.Documents
System.Windows.Forms.Integration
System.Windows.Ink
System.Windows.Input
System.Windows.Media
System.Windows.Media.Animation
System.Windows.Media.Effects
System.Windows.Media.Imaging
System.Windows.Media3D
System.Windows.TextFormatting
System.Windows.Navigation
System.Windows.Shapes
这个一个多对一的映射。在设计过程中需要保证不要引入两个同样名称的类,虽然这些类在不同的.NET命名空间中。