x:Subclass – direktiva
Upraví chování kompilace značek XAML, pokud x:Class
je také k dispozici. Místo vytvoření částečné třídy, která je založena na x:Class
, je poskytována x:Class
jako zprostředkující třída a pak je očekáváno, že vaše odvozená třída bude založena na x:Class
.
Použití atributu XAML
<object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">
...
</object>
Hodnoty XAML
Hodnota | Popis |
---|---|
namespace |
Nepovinné. Určuje obor názvů CLR, který obsahuje classname . Pokud namespace je zadána, tečka (.) odděluje namespace a classname . |
classname |
Povinný: 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 |
Nepovinné. Může se lišit od namespace toho, jestli každý obor názvů dokáže druhý přeložit. Určuje obor názvů CLR, který obsahuje subclassName . Pokud subclassName je zadána, tečka (.) odděluje subclassNamespace a subclassName . |
subclassName |
Povinný: Určuje název CLR podtřídy. |
Závislosti
X:Class Direktiva 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řená třída 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 x:Class
s konkrétními x:Subclass
architekturami, které používají programovací modely nebo aplikační modely, definují, jak propojit kód XAML, zkompilované značky a kód založený 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 Application v kořenovém adresáři v definici aplikace, který již má x:Class
. x:Subclass
Deklarace jakéhokoli jiného prvku než stránky nebo kořene aplikace nebo jeho určení, kde neexistujex:Class
, způsobí chybu v době kompilace.
Vytváření odvozených tříd, které fungují správně pro x:Subclass
scénář, 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) k přepsání zástupné procedury pro obslužné rutiny 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.
Při definování obou x:Class
a x:Subclass
, není nutné poskytnout žádnou implementaci třídy, která je odkazována .x:Class
Stačí mu dát název 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). Můžete dát x:Class
třídu implementaci, ale to není typický scénář pro použití obou x:Class
i x:Subclass
.
Viz také
.NET Desktop feedback