x:Subclass 指示詞
同時提供 x:Class
時,修改 XAML 標記編譯行為。 所提供的 x:Class
會建立為中繼類別,而不是建立以 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 的程式代碼後置。 請參閱。 |
subclassNamespace |
自選。 如果每個命名空間可以解析另一個命名空間,則與 namespace 不同。 指定包含 subclassName 的 CLR 命名空間。 如果指定了 subclassName ,點會分隔 subclassNamespace 和 subclassName 。 |
subclassName |
必填。 指定子類別的 CLR 名稱。 |
依賴
x:Class 指示詞 也必須在相同的物件上提供,而且該對象必須是 XAML 生產環境的根元素。
言論
x:Subclass
用法主要適用於不支援部分類別宣告的語言。
做為 x:Subclass
的類別不能是巢狀類別,而且 x:Subclass
必須參考根物件,如一節中所述。
否則,x:Subclass
的概念意義是由 .NET XAML 服務實作所定義。 這是因為 .NET XAML 服務行為不會指定連接 XAML 標記和支援程式代碼的整體程序設計模型。 與 x:Class
和 x:Subclass
相關的進一步概念實作是由使用程式設計模型或應用程式模型來定義如何連接 XAML 標記、編譯標記和 CLR 型程式代碼後置的特定架構所執行。 每個架構可能都有自己的建置動作,可啟用某些行為,或必須包含在建置環境中的特定元件。 在架構內,建置動作也會根據用於程式代碼後置的特定CLR語言而有所不同。
WPF 使用方式注意事項
x:Subclass
可以位於頁面根目錄或應用程式定義中 Application 根目錄上,而應用程式定義中已經有 x:Class
。 在頁面或應用程式根目錄以外的任何元素上宣告 x:Subclass
,或指定不存在 x:Class
的專案,會導致編譯時期錯誤。
建立適用於 x:Subclass
案例正確運作的衍生類別相當複雜。 您可能需要檢查中繼檔案 (標記編譯在專案的 obj 資料夾中產生的 .g 檔案,併入 .xaml 檔名的名稱)。 這些中繼檔案可協助您判斷已編譯應用程式中聯結部分類別中特定程序設計建構的來源。
衍生類別中的事件處理程式必須 internal override
(Microsoft Visual Basic 中的Friend Overrides
),才能覆寫編譯期間在中繼類別中建立之處理程式的存根。 否則,衍生類別實作會隱藏中繼類別實作和中繼類別處理程式不會叫用 。
當您定義 x:Class
和 x:Subclass
時,您不需要為 x:Class
所參考的類別提供任何實作。 您只需要透過 x:Class
屬性為它指定名稱,讓編譯程式有一些在中繼檔案中建立的類別指引(在此情況下,編譯程式不會選取預設名稱)。 您可以為 x:Class
類別提供實作;不過,這不是使用 x:Class
和 x:Subclass
的一般案例。
另請參閱
- x:Class 指示詞
- WPF 的 XAML 和自訂類別