WPF中XAML命名空間對映

2021-05-26 02:03:29 字數 1848 閱讀 6642

本主題進一步解釋每個可擴充套件應用程式標記語言 (xaml) 檔案的根標記中存在的兩個命名空間對映及其用途,同時還介紹如何生成類似的對映,以便使用在您自己的**中和/或單獨的程式集中定義的元素。

wpf 和 xaml 命名空間宣告

在許多可擴充套件應用程式標記語言 (xaml) 檔案的根標記中的命名空間宣告內,您都可以看到兩個 xmlns 宣告。第乙個宣告將整個 windows presentation foundation (wpf) 命名空間對映為預設命名空間:

xmlns=""

第二個宣告對映單獨的可擴充套件應用程式標記語言 (xaml) 命名空間,通常將其對映為 x: 字首。

xmlns:x=""

這些宣告之間的關係是:xaml 實際上是語言標準,而 wpf 是將 xaml 作為語言使用的乙個實現。xaml 語言指定一些為了相容而假定要實現的語言元素,每個元素都應當能通過針對 xaml 命名空間執行的 xaml 處理器實現進行訪問。wpf 實現為其自己的 api 保留預設命名空間,為 xaml 中需要的標記語法使用單獨的對映字首。按照約定,該字首是 x:,此 x: 約定後面是專案模板、示例**和此 sdk 中語言功能的文件。xaml 命名空間定義了許多常用功能,這些功能即使對於基本的 wpf 應用程式也是必需的。例如,若要通過分部類將任何**隱藏加入 xaml 檔案,您必須將該類命名為相關 xaml 檔案的根元素中的 x:class 屬性。或者,在 xaml 頁中定義的、您希望作為鍵控資源訪問的任何元素應當對相關元素設定了 x:key 屬性。

對映到自定義類和程式集

您可以在 xmlns 字首宣告中使用一系列標記將命名空間對映到程式集,這與將標準 wpf 和 xaml 命名空間對映到字首類似。

語法使用下列可能的命名標記和值:

clr-namespace: 在包含要作為元素公開的公共型別的程式集中宣告的公共語言執行庫 (clr) 命名空間。

assembly= 是指包含部分或全部引用的 clr 命名空間的程式集。該值通常只是程式集的名稱,而不是路徑。該程式集的路徑必須在生成編譯的 xaml 的專案檔案中以專案引用的形式建立。另外,為了合併版本管理和強名稱簽名,該值也可以是 assemblyname 定義的字串。

請注意,分隔 clr-namespace 標記和其值的字元是冒號 (:),而分隔 assembly 標記和其值的字元是等號 (=)。這兩個標記之間使用的字元是分號。例如:

xmlns:custom="clr-namespace:sdksample;assembly=sdksamplelibrary"

對映到當前程式集

如果引用的 clr-namespace 是在引用自定義類的應用程式**所在的程式集中定義的,則可以省略 assembly。這種情況的等效語法是指定 assembly=,等號後不需要任何字串標記。

如果自定義類是在同一程式集中定義的,則不能將其用作頁的根元素。不需要對映分部類;如果您希望在 xaml 中將自定義類作為元素引用,只需要對映應用程式中頁的非分部類。

在程式集中將 clr 命名空間對映為 xml 命名空間

wpf 定義乙個 clr 屬性,xaml 處理器使用它來將多個 clr 命名空間對映到單個 xml 命名空間。xmlnsdefinitionattribute 屬性放置在生成程式集的源**中的程式集級別。wpf 程式集源**使用此屬性將各種常見的命名空間(如 system.windows 和 system.windows.controls)對映到 命名空間。

xmlnsdefinitionattribute 採用兩個引數:xml 命名空間名稱和 clr 命名空間名稱。可以存在多個 xmlnsdefinitionattribute,這樣便可以將多個 clr 命名空間對映到同一 xml 命名空間。對映後,如果需要,還可以通過在分部類**隱藏頁中提供相應的 using 語句來引用這些命名空間的成員,而無需完全限定。

XAML 命名空間和命名空間對映

本主題將介紹大部分 xaml 檔案的根元素中存在的 xml xaml 命名空間 xmlns 對映。它還將介紹如何為自定義型別和程式集生成類似的對映。無論是其一般用途還是 windows 執行時應用程式設計的應用上,xaml 都用於宣告物件 這些物件的屬性以及表示為層次結構的物件 屬性關係。你在 xa...

WPF中命名空間定義

一 xmlns命名空間 以xmlns 這個為例,其實它就是system.windows,system.windows.automation,system.windows.controls.等一系列命名空間的集合,是這個集合的 別名 在瀏覽器輸入這個 有時候是不可訪問的。如下圖 處所示 利用.net ...

XAML概要 XAML的根元素和命名空間

xmlns x 上例中的根元素中包含兩個屬性 xmlns和xmlns x。這兩個屬性給xaml處理器指明了標籤中引用的元素是在哪個xml命名空間中定義的。特別是xmlns屬性,它指明了預設的xml命名空間,在預設的xml命名空間中,物件元素可以不使用字首來指定,對於大多數的wpf應用案例,以及在sd...