2011-05-10 40 views
3

我在XAML,我們有東西開始注意到像WPF xaml文件開頭的xmlns = [some url]屬性是什麼?

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

唯一的其他用法我看到的xmlns是從我的組件導入命名空間。這些也是進口裝配的實例嗎?從一個URL?如果不是,他們指的是什麼?如果電腦沒有連接到互聯網怎麼辦?

回答

0

第一個聲明映射整體WPF客戶端/框架XAML命名空間作爲默認:

的xmlns = 「http://schemas.microsoft.com/winfx/2006/xaml/presentation」

的第二個聲明映射一個單獨的XAML名稱空間,將其映射(通常)爲x:前綴。

的xmlns:X =「http://schemas.microsoft.com/winfx/2006/xaml」

這些聲明之間的關係是在x:前綴映射支持是XAML的一部分內在語言定義,WPF是一種使用XAML作爲語言的實現,併爲XAML定義了其對象的詞彙表。由於WPF詞彙的用法比XAML內在用法要普遍得多,所以WPF詞彙表被映射爲默認值。

用於映射XAML語言內部函數支持的x:前綴約定之後是項目模板,示例代碼以及此SDK中語言功能的文檔。 XAML命名空間定義了許多即使對於基本的WPF應用程序也是必需的常用功能。例如,要將任何代碼隱藏通過分部類連接到XAML文件,必須將該類命名爲相關XAML文件的根元素中的x:Class屬性。或者,如在XAML頁面中定義您要訪問的鍵控資源的任何元素應該有X:主要屬性有問題

http://msdn.microsoft.com/en-us/library/ms747086.aspx

+0

我認爲,爲了讀者的利益,如果你寫或引用一些你認爲可以回答問題的東西,而不僅僅是給出鏈接並讓讀者找到答案,那麼會更好。特別是當鏈接不完整時。 – 2011-05-10 08:04:29

2

這是不相關的XAML元素上設置的,但一般的XML。

命名空間的目標是能夠唯一標識xml對象。

看一看here

例如,它允許有兩個「客戶」節點,具有不同的名稱空間。程序可以區分它是來自系統A還是系統B的客戶節點。

這也可以與C#命名空間進行比較。 「Control」類既存在於System.Windows也存在於System.Windows.Forms中,甚至在System.Web.Ui中也存在......同名,但「所有者」根據名稱空間而不同。

有一點要知道,它只是一個聲明。命名空間是一個自由文本,http://格式只是一個約定,不會發生目標uri的下載。

+0

我的問題是關於url的存在,而不是關於xmlns本身。如果url只是約定,那麼http://schemas.microsoft.com/winfx/2006/xaml和http://schemas.microsoft.com/winfx/2006/xaml/presentation是指什麼? – 2011-05-10 08:01:40

+0

我想'http://schemas.microsoft。com/winfx/2006/xaml'涉及到xaml解析器(因爲xaml不僅是XML,而且是一種聲明性語言),並且'http:// schemas.microsoft.com/winfx/2006/xaml/presentation'很可能硬編碼在WPF庫中的某處。但這只是猜測 – 2011-05-10 08:05:38

+0

@Louis:這和我們將類放入不同名稱空間的原因完全相同。在XML中,URI是[如何命名](http://en.wikipedia.org/wiki/XML_namespace#Namespace_names)。即使它看起來像一個URL,它也不一定要引用現有的位置。這只是一個名字。 – 2011-05-10 08:29:06