Direttiva x:Subclass
Modifica il comportamento di compilazione del markup XAML quando x:Class
viene fornito anche . Anziché creare una classe parziale basata su x:Class
, l'oggetto fornito x:Class
viene creato come classe intermedia e quindi si prevede che la classe derivata fornita sia basata su x:Class
.
Uso della sintassi XAML per gli attributi
<object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">
...
</object>
Valori XAML
Valore | Descrizione |
---|---|
namespace |
(Facoltativo). Specifica uno spazio dei nomi CLR che contiene classname . Se namespace viene specificato, un punto (.) separa namespace e classname . |
classname |
Obbligatorio. Specifica il nome CLR della classe parziale che connette il codice XAML caricato e il code-behind per quel codice XAML. Vedere la sezione Osservazioni. |
subclassNamespace |
(Facoltativo). Può essere diverso da namespace se ogni spazio dei nomi può risolvere l'altro. Specifica uno spazio dei nomi CLR che contiene subclassName . Se subclassName viene specificato, un punto (.) separa subclassNamespace e subclassName . |
subclassName |
Obbligatorio. Specifica il nome CLR della sottoclasse. |
Dipendenze
La direttiva x:Class deve essere fornita anche sullo stesso oggetto e tale oggetto deve essere l'elemento radice dell'ambiente di produzione XAML.
Osservazioni
x:Subclass
l'utilizzo è destinato principalmente a linguaggi che non supportano dichiarazioni di classi parziali.
La classe usata come x:Subclass
non può essere una classe annidata e x:Subclass
deve fare riferimento all'oggetto radice come illustrato nella sezione "Dipendenze".
In caso contrario, il significato concettuale di x:Subclass
non è definito da un'implementazione di servizi XAML .NET. Ciò è dovuto al fatto che il comportamento dei servizi XAML .NET non specifica il modello di programmazione complessivo in base al quale il markup XAML e il codice di backup sono connessi. Le implementazioni di altri concetti correlati a x:Class
e x:Subclass
vengono eseguite da framework specifici che usano modelli di programmazione o modelli di applicazione per definire come connettere markup XAML, markup compilato e code-behind basato su CLR. Ogni framework può avere azioni di compilazione specifiche che consentono alcuni dei comportamenti o componenti specifici che devono essere inclusi nell'ambiente di compilazione. All'interno di un framework, le azioni di compilazione possono variare anche in base al linguaggio CLR specifico usato per il code-behind.
Note sull'utilizzo di WPF
x:Subclass
può trovarsi in una radice di pagina o nella Application radice nella definizione dell'applicazione, che ha x:Class
già . Dichiarando x:Subclass
in qualsiasi elemento diverso da una pagina o da una radice dell'applicazione o specificandolo dove non x:Class
esiste, viene generato un errore in fase di compilazione.
La creazione di classi derivate che funzionano correttamente per lo x:Subclass
scenario è piuttosto complessa. Potrebbe essere necessario esaminare i file intermedi (i file con estensione g prodotti nella cartella obj del progetto tramite compilazione di markup, con nomi che incorporano i nomi dei file con estensione xaml). Questi file intermedi consentono di determinare l'origine di determinati costrutti di programmazione nelle classi parziali unite in join nell'applicazione compilata.
I gestori eventi nella classe derivata devono essere internal override
(Friend Overrides
in Microsoft Visual Basic) per eseguire l'override degli stub per i gestori creati nella classe intermedia durante la compilazione. In caso contrario, le implementazioni della classe derivata nascondono (shadow) l'implementazione della classe intermedia e i gestori della classe intermedia non vengono richiamati.
Quando si definiscono sia x:Class
che x:Subclass
, non è necessario fornire alcuna implementazione per la classe a cui fa x:Class
riferimento . È sufficiente assegnare un nome tramite l'attributo x:Class
in modo che il compilatore disponga di alcune linee guida per la classe creata nei file intermedi (in questo caso il compilatore non seleziona un nome predefinito). È possibile assegnare alla x:Class
classe un'implementazione; tuttavia, questo non è lo scenario tipico per l'uso di sia x:Class
che x:Subclass
.
Vedi anche
.NET Desktop feedback
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per