Delen via


x:Subklasse-richtlijn

Wijzigt het compilatiegedrag van XAML-markeringen wanneer x:Class ook wordt geleverd. In plaats van een gedeeltelijke klasse te maken die is gebaseerd op x:Class, wordt de opgegeven x:Class gemaakt als een tussenliggende klasse en wordt de opgegeven afgeleide klasse naar verwachting gebaseerd op x:Class.

XAML-kenmerkgebruik

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

XAML-waarden

Waarde Beschrijving
namespace Facultatief. Hiermee geeft u een CLR-naamruimte op die classnamebevat. Als namespace is opgegeven, scheidt een punt (.) namespace en classname.
classname Vereist. Hiermee geeft u de CLR-naam op van de gedeeltelijke klasse waarmee de geladen XAML en uw code-behind voor die XAML worden verbonden. Zie opmerkingen.
subclassNamespace Facultatief. Kan afwijken van namespace als elke naamruimte de andere kan omzetten. Hiermee geeft u een CLR-naamruimte op die subclassNamebevat. Als subclassName is opgegeven, scheidt een punt (.) subclassNamespace en subclassName.
subclassName Vereist. Hiermee geeft u de CLR-naam van de subklasse.

Afhankelijkheden

x:Class Directive moet ook op hetzelfde object worden verstrekt en dat object moet het hoofdelement van de XAML-productie zijn.

Opmerkingen

x:Subclass gebruik is voornamelijk bedoeld voor talen die geen gedeeltelijke klassedeclaraties ondersteunen.

De klasse die als x:Subclass wordt gebruikt, kan geen geneste klasse zijn en x:Subclass moet verwijzen naar het hoofdobject, zoals uitgelegd in de sectie 'Afhankelijkheden'.

Anders is de conceptuele betekenis van x:Subclass niet gedefinieerd door een .NET XAML Services-implementatie. Dit komt doordat het gedrag van .NET XAML Services niet het algemene programmeermodel opgeeft waarmee XAML-markeringen en back-upcode zijn verbonden. Implementaties van verdere concepten met betrekking tot x:Class en x:Subclass worden uitgevoerd door specifieke frameworks die gebruikmaken van programmeermodellen of toepassingsmodellen om te definiƫren hoe u XAML-markeringen, gecompileerde markeringen en op CLR gebaseerde code achter elkaar verbindt. Elk framework kan zijn eigen buildacties hebben die een deel van het gedrag mogelijk maken of specifieke onderdelen die moeten worden opgenomen in de build-omgeving. Binnen een framework kunnen buildacties ook variƫren op basis van de specifieke CLR-taal die wordt gebruikt voor de code-behind.

Opmerkingen bij WPF-gebruik

x:Subclass kan zich in een paginahoofdmap of in de Application hoofdmap van de toepassingsdefinitie bevinden, die al x:Classheeft. Als u x:Subclass declareert op een ander element dan een pagina of toepassingshoofdmap, of als u deze opgeeft waar geen x:Class bestaat, veroorzaakt u een compilatietijdfout.

Het maken van afgeleide klassen die correct werken voor het x:Subclass scenario is redelijk complex. Mogelijk moet u de tussenliggende bestanden onderzoeken (de G-bestanden die zijn geproduceerd in de obj-map van uw project door middel van het compileren van markeringen, met namen die de .xaml-bestandsnamen bevatten). Deze tussenliggende bestanden kunnen u helpen bij het bepalen van de oorsprong van bepaalde programmeerconstructies in de gekoppelde gedeeltelijke klassen in de gecompileerde toepassing.

Gebeurtenis-handlers in de afgeleide klasse moeten worden internal override (Friend Overrides in Microsoft Visual Basic) om de stubs voor de handlers te overschrijven die tijdens de compilatie zijn gemaakt in de tussenklasse. Anders verbergen de afgeleide klasse-implementaties (schaduw) de implementatie van de tussenliggende klasse en worden de handlers van de tussenklasse niet aangeroepen.

Wanneer u zowel x:Class als x:Subclassdefinieert, hoeft u geen implementatie op te geven voor de klasse waarnaar wordt verwezen door x:Class. U hoeft deze alleen een naam te geven via het x:Class kenmerk, zodat de compiler enige richtlijnen heeft voor de klasse die wordt gemaakt in de tussenliggende bestanden (de compiler selecteert in dit geval geen standaardnaam). U kunt de x:Class klasse een implementatie geven; Dit is echter niet het typische scenario voor het gebruik van zowel x:Class als x:Subclass.

Zie ook