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 classname bevat. 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 subclassName bevat. 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:Class
heeft. 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:Subclass
definieert, 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
.NET Desktop feedback