Freigeben über


x:Subclass-Attribut

Aktualisiert: November 2007

Ändert das XAML-Kompilierungsverhalten in Fällen, in denen x:Class auch angegeben wird. Anstatt eine partielle Klasse basierend auf der Seitenklasse zu erstellen, wird die angegebene x:Class als Zwischenklasse erstellt, und es wird dann erwartet, dass die von Ihnen bereitgestellte abgeleitete Klasse auf x:Class basiert.

Verwendung von XAML-Attributen

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

XAML-Werte

namespace

Optional. Gibt einen CLR-Namespace an, der classname enthält. Wenn namespace angegeben ist, werden namespace und classname durch einen Punkt (.) getrennt.

classname

Erforderlich. Gibt den CLR-Namen der partiellen Klasse an, die den geladenen XAML-Code und Ihren Code-Behind für XAML verbindet. Siehe Hinweise.

subclassNamespace

Optional. Kann sich von namespace unterscheiden, solange ein Namespace den anderen auflösen kann. Gibt einen CLR-Namespace an, der subclassName enthält. Wenn subclassName angegeben ist, werden subclassNamespace und subclassName durch einen Punkt (.) getrennt.

subclassName

Erforderlich. Gibt den CLR-Namen der Unterklasse an.

Abhängigkeiten

x:Class-Attribut muss auch auf demselben Element bereitgestellt werden, und dieses Element muss das Stammelement einer Seite sein.

Hinweise

Die Verwendung von x:Subclass ist hauptsächlich für Sprachen bestimmt, die keine Deklarationen für partielle Klassen unterstützen.

x:Subclass kann für jedes Element deklariert werden, bei dem es sich um das Stammelement einer Extensible Application Markup Language (XAML)-Seite handelt, sowie für das Application-Stammelement in der Anwendungsdefinition, das bereits über x:Class verfügt. Das Deklarieren von x:Subclass für alle Elemente, bei denen es sich nicht um das Stammelement einer Seite oder Anwendung handelt, oder das Angeben an Positionen, an denen x:Class nicht vorhanden ist, führt zu einem Kompilierzeitfehler.

Die Erstellung von abgeleiteten Klassen, die für das x:Subclass-Szenario richtig funktionieren, ist recht komplex. Es kann sein, dass Sie die Zwischendateien untersuchen müssen (die G-Dateien, die im Ordner "obj" Ihres Projekts mit Namen erstellt werden, die die Namen der XAML-Dateien enthalten). Diese Zwischendateien unterstützen Sie beim Bestimmen des Ursprungs bestimmter Konstrukte in den verknüpften partiellen Klassen innerhalb der kompilierten Anwendung.

Die als x:Subclass verwendete Klasse darf keine geschachtelte Klasse sein.

Ereignishandler in der abgeleiteten Klasse müssen den Typ internal override aufweisen (Friend Overrides in Microsoft Visual Basic .NET), um die Stubs für die Handler zu überschreiben, die während der Kompilierung in der Zwischenklasse erstellt wurden. Andernfalls würden die Implementierungen der abgeleiteten Klasse die Implementierung der Zwischenklasse ausblenden (Shadowing), und die Zwischenklassenhandler könnten nicht aufgerufen werden.

Wenn Sie sowohl x:Class als auch x:Subclass definieren, müssen Sie keine Implementierung für die Klasse angeben, auf die über x:Class verwiesen wird. Sie müssen nur einen Namen über das x:Class-Attribut angeben, damit der Compiler über Anweisungen zur Klasse verfügt, die in den Zwischendateien erstellt wird (der Compiler vergibt in diesem Fall keinen Standardnamen). Sie können die x:Class-Klasse bei Bedarf mit einer Implementierung versehen, aber dies ist beim normalen Szenario für die Verwendung von x:Class und x:Subclass normalerweise nicht vorgesehen.

Siehe auch

Konzepte

XAML und benutzerdefinierte Klassen

Referenz

x:Class-Attribut