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é
- direktivy x:class
- XAML a vlastní třídy pro WPF
.NET Desktop feedback