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