在前一篇文章中,指出xmlns的作用是設(shè)置XML文件的命名空間。類似的,xmlns:x的作用也是指定命名空間。這里為什么是x而不是其他的,我們可以簡(jiǎn)單的理解為其只是MS的一個(gè)命名而已,沒有任何特殊的意義,當(dāng)然,為了避免和它的沖突,我們定義自己的命名空間的時(shí)候不能是x。
而另一個(gè)x:Class的作用就是支持當(dāng)前Window所對(duì)應(yīng)的類,前面已經(jīng)說過每個(gè)XAML元素都是一個(gè)CLR類型,這里的x:Class是Window的一個(gè)屬性,屬性的內(nèi)容指出當(dāng)前的窗口類是FirstXAML名字空間下的Windows1。為什么需要類,而不全部用XAML實(shí)現(xiàn)?XAML的主要作用還是編寫UI部分,我們?nèi)匀恍枰么a對(duì)程序邏輯進(jìn)行更深層次的控制。
好了,這是兩個(gè)最基本的名字空間。同樣地,名字空間也可以自定義,并且這個(gè)自定義會(huì)給我們帶來很大的方便。我們定義如下的一個(gè)類:
namespace DataBind4Image
{
public class GroupData
{
//具體的細(xì)節(jié)忽略
}
}
如果想在XAML文件中使用這個(gè)GroupData類對(duì)象,我們就可以通過自定義的名字空間引入這個(gè)類:
xmlns:local="clr-namespace:DataBind4Image"
這里的后綴local只是一個(gè)標(biāo)識(shí),你可以設(shè)置為任何你喜歡的唯一標(biāo)識(shí)。通過這個(gè)引入定義我們就可以在XAML文件中用local來標(biāo)識(shí)DataBind4Image當(dāng)中的任何類。訪問GroupData類時(shí)只需要加上local就可以識(shí)別了:<local:DrawingGroupData/>
利用名字空間,除了可以引入我們定義的當(dāng)前工程的類,還可以引入任何的Assembly。直接看例子是最簡(jiǎn)單的:
xmlns=" xmlns:x=" xmlns:sys="clr-namespace:System;assembly=System"
>
<ListBox>
<sys:String>One</sys:String>
</ListBox>
</Window>
例子當(dāng)中引入.NET的System Assembly,通過它我們就可以直接使用System的任何類。利用這種類似的方式,我們可以在XAML中使用幾乎所有的DOTNET框架類。
最后說明一下在XAML中inline嵌入程序邏輯處理代碼的情況。利用<CDATA[…]]>關(guān)鍵字引入處理代碼。這種情況在實(shí)際當(dāng)中不太合適,我們不應(yīng)該采用UI和邏輯混合的方式。詳細(xì)的解釋可以參數(shù)Windows SDK文檔。 <![CDATA[ 前面提到過每個(gè)XAML元素表示一個(gè).NET CLR類。多數(shù)的XAML元素都是從System.Windows.UIElement, System.Windows.FrameworkElement, System.Windows.FrameworkContentElement和System.Windows.ContentElement繼承。沒有任何的XAML元素與.NET CLR的抽象類對(duì)應(yīng)。但是很多元素都有一個(gè)抽象類的派生類對(duì)應(yīng)。 通常有如下四種通用的XAML元素: Root元素:Windows和Page是最常用的根元素。這些元素位于XAML文件的根元素,并包含其他元素。 Panel元素:幫助布置UI位置。常用的是StackPanel, DockPanel, Grid和Canvas。 Control元素:定義XAML文件的控件類型。允許添加控件并自定義。 XAML元素的屬性與.NET類對(duì)象的屬性類似,XAML的面向?qū)ο筇卣魇沟盟男袨榕c之前的HTML類似。每個(gè)屬性(實(shí)際上是類屬性)繼承了父元素的屬性或者重載(如果重新設(shè)置了屬性)。
void Clicked(object sender, RoutedEventArgs e)
{
button1.Content = "Hello World";
}
]]></x:Code>
Document元素:幫助實(shí)現(xiàn)文檔提交。主要分為Inline和Block元素組,幫助設(shè)計(jì)的外觀類似文檔。一些有名的Inline元素有Bold,LineBreak, Italic。Block元素有Paragraph, List, Block, Figure和Table。
聯(lián)系客服