在VS創(chuàng)建了一個(gè)默認(rèn)的WPF應(yīng)用程序后,會(huì)發(fā)現(xiàn)自動(dòng)生成的XML代碼有一串莫名奇妙的URL代碼,如下圖所示涨颜。
那這些URL標(biāo)識(shí)的作用是什么呢,答案是命名空間茧球。
核心命名空間
//第一段命名空間
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
第一段命名空間是WPF控件的命名空間庭瑰,WPF命名空間本來是要在C#中引入的,例如:
using System.Windows;
using System.Windows.Controls;
using ......
但是由于不同控件在不同的命名空間袜腥,引入起來特別麻煩见擦,因此XMAL就將這些命名空間封裝到了一個(gè)URL標(biāo)識(shí)中钉汗。
//第二段命名空間
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
第二段命名空間引用的是默認(rèn)XAML類庫羹令,其中包含大量的XAML專用的元素和屬性,通過在標(biāo)簽中標(biāo)記x:使用损痰。而第一段命名空間是默認(rèn)命名空間福侈,不需要標(biāo)記任何標(biāo)記就可以使用,這樣做的原因是WPF命名空間的元素遠(yuǎn)多于XAML命名空間的元素和屬性卢未。如下代碼塊:
//<Grid>不需要標(biāo)記肪凛,x:Name需要標(biāo)記
<Grid x:Name="Grid1"> </Grid>
這兩段命名空間是核心命名空間堰汉,也是寫XAML必需引用的,因?yàn)椴豢赡懿挥玫絎PF和XAML類庫伟墙。
設(shè)計(jì)類命名空間
//該命名空間引用Expression Blend輔助設(shè)計(jì)類庫翘鸭,對(duì)Visual Studio和Expression Blend視圖設(shè)計(jì)模式提供支持,其實(shí)際設(shè)計(jì)中主要提供設(shè)計(jì)視圖頁面尺寸定制戳葵。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
//該命名空間引用XAML語言輔助類庫就乓,對(duì)XAML提供輔助設(shè)計(jì)支持,主要功能是為XAML語法解析器提供輔助解釋功能拱烁,例如生蚁,使用mc:Ignorable=“d”告知XAML解析器以“xmlns:d”為前綴的元素引用在運(yùn)行時(shí)被忽略。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
主要是給Visual Studio 和 Expression Blend設(shè)計(jì)軟件提供支持的戏自,這里不著重介紹邦投。
使用系統(tǒng)類
//可以應(yīng)用系統(tǒng)類,如System,System.Collections
xmlns:s="clrnamespace:System.Collections;assembly=mscorlib"
使用自定義類
//定義了一個(gè)自定義的Person的命名空間后擅笔,可以如下引用
xmlns:local="clr-namespace:Person"
使用DLL程序集
首先在項(xiàng)目中添加程序集的引用志衣,然后在XAML引入其命名空間
//引入DLL程序集中的Library1命名空間
xmlns:customlib="clr-namespace:Library1;assembly=Library"