共用方式為


x:Subclass 屬性

更新:2007 年 11 月

在也有提供 x:Class 的情況下,修改 XAML 編譯行為。具體來說,此屬性並不會依據頁類別建立部分類別,而是將提供的 x:Class 建立成中繼類別,而您所提供的衍生類別則應該以 x:Class 做為依據。

XAML 屬性使用方式

<object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">
   ...
</object>

XAML 值

namespace

選擇項,指定包含 classname 的 CLR 命名空間。如果已指定 namespace,則為一點 (.)。區隔 namespace 和 classname。

classname

必要項。指定部分類別的 CLR 名稱,這個部分類別會連接載入的 XAML 和該 XAML 的程式碼後置 (Code-Behind)。請參閱「備註」。

subclassNamespace

選擇項,只要每個命名空間都能彼此解析,就可能與 namespace 不同。指定包含 subclassName 的 CLR 命名空間。如果已指定 subclassName,則為一點 (.)。區隔 subclassNamespace 和 subclassName。

subclassName

必要項。指定子類別 (Subclass) 的 CLR 名稱。

相依性

在相同項目上也必須提供 x:Class 屬性,而且該項目必須是頁面的根項目 (Root Element)。

備註

x:Subclass 的使用方式主要適用於不支援部分類別宣告的語言。

您可以針對本身為可延伸標記語言 (XAML) 頁面根項目的任何項目,以及/或應程式定義中已經有 x:Class 的 Application 根項目,宣告 x:Subclass。在頁面或應用程式根項目以外的其他任何項目上宣告 x:Subclass ,或是在沒有 x:Class 的位置指定它,都會產生編譯時期錯誤。

建立可針對 x:Subclass 案例正確運作的衍生類別相當複雜。您可能必須檢查中繼檔案 (專案之 obj 資料夾中產生的 .g 檔案,其名稱中包含 .xaml 檔案名稱)。這些中繼檔案可以幫助您在編譯應用程式內已聯結的部分類別中,判斷特定程式設計建構的來源。

用來做為 x:Subclass 的類別不可以是巢狀類別。

衍生類別中的事件處理常式 (Event Handler) 必須是 internal override (Microsoft Visual Basic .NET 中的 Friend Overrides),以便覆寫編譯期間在中繼類別中建立之處理常式的 Stub,否則衍生類別實作便會隱藏 (遮蔽) 中繼類別實作,而且無法叫用中繼類別處理常式。

定義 x:Class 和 x:Subclass 時,您不需要提供 x:Class 參考之類別的任何實作。您只需要透過 x:Class 屬性 (Attribute) 指定其名稱,讓編譯器具有某些指引,可用於它在中繼檔案中建立的類別 (在這種情況下,編譯器不會選擇預設名稱)。您可視需要為 x:Class 類別提供實作,但這不屬於使用 x:Class 和 x:Subclass 的典型案例。

請參閱

概念

XAML 和自訂類別

參考

x:Class 屬性