在VS创建了一个默认的WPF应用程序后,会发现自动生成的XML代码有一串莫名奇妙的URL代码,如下图所示。
那这些URL标识的作用是什么呢,答案是命名空间。
核心命名空间
//第一段命名空间
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
第一段命名空间是WPF控件的命名空间,WPF命名空间本来是要在C#中引入的,例如:
using System.Windows;
using System.Windows.Controls;
using ......
但是由于不同控件在不同的命名空间,引入起来特别麻烦,因此XMAL就将这些命名空间封装到了一个URL标识中。
//第二段命名空间
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
第二段命名空间引用的是默认XAML类库,其中包含大量的XAML专用的元素和属性,通过在标签中标记x:使用。而第一段命名空间是默认命名空间,不需要标记任何标记就可以使用,这样做的原因是WPF命名空间的元素远多于XAML命名空间的元素和属性。如下代码块:
//<Grid>不需要标记,x:Name需要标记
<Grid x:Name="Grid1"> </Grid>
这两段命名空间是核心命名空间,也是写XAML必需引用的,因为不可能不用到WPF和XAML类库。
设计类命名空间
//该命名空间引用Expression Blend辅助设计类库,对Visual Studio和Expression Blend视图设计模式提供支持,其实际设计中主要提供设计视图页面尺寸定制。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
//该命名空间引用XAML语言辅助类库,对XAML提供辅助设计支持,主要功能是为XAML语法解析器提供辅助解释功能,例如,使用mc:Ignorable=“d”告知XAML解析器以“xmlns:d”为前缀的元素引用在运行时被忽略。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
主要是给Visual Studio 和 Expression Blend设计软件提供支持的,这里不着重介绍。
使用系统类
//可以应用系统类,如System,System.Collections
xmlns:s="clrnamespace:System.Collections;assembly=mscorlib"
使用自定义类
//定义了一个自定义的Person的命名空间后,可以如下引用
xmlns:local="clr-namespace:Person"
使用DLL程序集
首先在项目中添加程序集的引用,然后在XAML引入其命名空间
//引入DLL程序集中的Library1命名空间
xmlns:customlib="clr-namespace:Library1;assembly=Library"