Sdílet prostřednictvím


x:Subclass – direktiva

Upraví chování kompilace značek XAML při poskytnutí x:Class. Místo vytvoření částečné třídy založené na x:Class, poskytnuté x:Class se vytvoří jako zprostředkující třída a pak se očekává, že vaše odvozená třída bude založená na x:Class.

Použití atributu XAML

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

Hodnoty XAML

Hodnota Popis
namespace Volitelný. Určuje obor názvů CLR, který obsahuje classname. Pokud je zadán namespace, tečka (.) odděluje namespace a classname.
classname Požadovaný. Určuje název CLR částečné třídy, která spojuje načtený KÓD XAML a kód pro daný XAML. Viz poznámky.
subclassNamespace Volitelný. Pokud každý obor názvů dokáže přeložit jiný obor názvů, může se lišit od namespace. Určuje obor názvů CLR, který obsahuje subclassName. Pokud je zadán subclassName, tečka (.) odděluje subclassNamespace a subclassName.
subclassName Požadovaný. Určuje název CLR podtřídy.

Závislosti

direktiva x:Class musí být také poskytována na stejném objektu a tento objekt musí být kořenovým prvkem produkčního prostředí XAML.

Poznámky

x:Subclass použití je primárně určené pro jazyky, které nepodporují částečné deklarace tříd.

Třída použitá jako x:Subclass nemůže být vnořenou třídou a x:Subclass musí odkazovat na kořenový objekt, jak je vysvětleno v části Závislosti.

V opačném případě je koncepční význam x:Subclass nedefinován implementací služby .NET XAML Services. Důvodem je to, že chování služby .NET XAML Services neurčuje celkový programovací model, pomocí kterého jsou propojené kódy XAML a backing. Implementace dalších konceptů souvisejících s x:Class a x:Subclass se provádějí konkrétními architekturami, které používají programovací modely nebo aplikační modely k definování způsobu propojení kódu XAML, zkompilovaných značek a kódu založených na CLR. Každá architektura může mít vlastní akce sestavení, které umožňují určité chování nebo konkrétní komponenty, které musí být součástí prostředí sestavení. V rámci architektury se akce sestavení můžou lišit také v závislosti na konkrétním jazyce CLR, který se používá pro kód.

Poznámky k využití WPF

x:Subclass může být v kořenovém adresáři stránky nebo v kořenovém adresáři Application v definici aplikace, který již má x:Class. Deklarování x:Subclass u jakéhokoli jiného prvku než stránky nebo kořenového adresáře aplikace nebo jeho zadání, pokud neexistuje žádná x:Class, způsobí chybu v době kompilace.

Vytváření odvozených tříd, které fungují správně pro scénář x:Subclass, je poměrně složité. Je možné, že budete muset prozkoumat zprostředkující soubory (soubory .g vytvořené ve složce obj projektu zkompilováním značek s názvy, které obsahují názvy souborů .xaml). Tyto zprostředkující soubory vám můžou pomoct určit původ určitých programovacích konstruktorů ve spojených částečných třídách v kompilované aplikaci.

Obslužné rutiny událostí v odvozené třídě musí být internal override (Friend Overrides v jazyce Microsoft Visual Basic), aby bylo možné přepsat zástupné procedury obslužných rutin vytvořené v zprostředkující třídě během kompilace. Jinak implementace odvozené třídy skryjí (stín) implementaci zprostředkující třídy a obslužné rutiny zprostředkující třídy nejsou vyvolány.

Když definujete x:Class i x:Subclass, nemusíte poskytovat žádnou implementaci třídy, na kterou odkazuje x:Class. Stačí mu dát název pouze prostřednictvím atributu x:Class, aby kompilátor získal nějaké pokyny pro třídu, kterou vytvoří v zprostředkujících souborech (kompilátor v tomto případě nevybere výchozí název). x:Class třídu můžete dát implementaci; nejedná se však o typický scénář použití x:Class i x:Subclass.

Viz také