Condividi tramite


Direttiva x:Class

Configura la compilazione del markup XAML per creare un join delle classi parziali tra markup e code-behind. La classe parziale del codice viene definita in un file di codice distinto in un linguaggio Common Language Specification (CLS), mentre la classe parziale del markup viene in genere creata dalla generazione del codice durante la compilazione XAML.

Utilizzo della sintassi XAML per gli attributi

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

Valori XAML

namespace

Facoltativo. Specifica uno spazio dei nomi CLR contenente la classe parziale identificata da classname. Se l'oggetto namespace viene specificato, un punto (.) separa namespace e classname. Vedere la sezione Osservazioni.

classname

Obbligatoria. Specifica il nome CLR della classe parziale che connette il codice XAML caricato e il code-behind per tale codice XAML.

Dipendenze

È possibile specificare x:Class solo sull'elemento radice di una produzione XAML. x:Class non è valido su qualsiasi oggetto che dispone di un padre nella produzione XAML. Per ulteriori informazioni, vedere[MS-XAML] Sezione 4.3.1.6.

Note

Il valore namespace può contenere punti aggiuntivi per organizzare gli spazi dei nomi correlati in gerarchie di nomi, il che rappresenta una tecnica comune nella programmazione .NET Framework. Solo il punto ultimo in una stringa di valori x:Class viene interpretato per separare namespace e classname. La classe utilizzata come x:Class non può essere una classe annidata. Le classi annidate non sono consentite poiché in caso contrario la determinazione dei significati dei punti delle stringhe x:Class sarebbe ambigua.

Nei modelli di programmazione esistenti che utilizzano x:Class, x:Class è facoltativo in quanto la presenza di una pagina XAML senza alcun code-behind rappresenta un comportamento del tutto valido. Tuttavia, questa funzione interagisce con le operazioni di compilazione implementate da framework che utilizzano XAML. La funzionalità di x:Class viene influenzata anche dai ruoli che le varie classificazioni di contenuto specificato da XAML hanno in un modello di applicazione e nelle azioni di compilazione corrispondenti. Se XAML dichiara valori di attributi di gestione degli eventi o crea istanze di elementi personalizzati in cui le classi di definizione sono incluse nella classe code-behind, è necessario fornire il riferimento della direttiva x:Class, o x:Subclass, alla classe appropriata per il code-behind.

Il valore della direttiva x:Class deve essere una stringa che specifica il nome completo di una classe, ma senza informazioni sull'assembly (equivalente alla proprietà Type.FullName). Per le applicazioni semplici, è possibile omettere le informazioni sullo spazio dei nomi CLR se la struttura del code-behind è la stessa (la definizione del codice inizia a livello di classe).

Il file code-behind per la definizione di una pagina o di un'applicazione deve essere all'interno di un file di codice incluso come parte del progetto che genera un'applicazione compilata e comporta la compilazione del markup. È necessario attenersi alle regole dei nomi per le classi CLR. Per ulteriori informazioni, vedere Linee guida di progettazione per lo sviluppo di librerie di classi. Per impostazione predefinita, la classe code-behind deve essere public; tuttavia è possibile definirla in un livello di accesso diverso utilizzando Direttiva x:ClassModifier.

Questa interpretazione dell'attributo x:Class si applica solo a un'implementazione XAML basata su CLR, in particolare per quanto riguarda i Servizi XAML di .NET Framework. Le altre implementazioni XAML non basate su CLR e che non utilizzano classi di servizi XAML di .NET Framework potrebbero utilizzare una formula di risoluzione diversa per la connessione al markup XAML e il supporto al codice runtime. Per ulteriori informazioni su interpretazioni più generali di x:Class, vedere [MS-XAML].

A un determinato livello di architettura, il significato di x:Class non è definito nei servizi XAML di .NET Framework. Ciò è dovuto al fatto che i servizi XAML di .NET Framework non specificano il modello di programmazione complessivo mediante cui sono connessi il markup XAML e il codice di supporto. Ulteriori utilizzi della direttiva x:Class potrebbero essere implementati da framework specifici che utilizzano modelli di programmazione o di applicazione per definire come connettere markup XAML e code-behind basato su CLR. Ciascuno di questi framework può disporre di operazioni di compilazione che abilitano alcuni comportamenti o componenti specifici da includere nell'ambiente di compilazione. All'interno di un framework, le azioni di compilazione possono variare anche a seconda del linguaggio CLR specifico utilizzato per il code-behind.

x:Class nel Modello di programmazione WPF

Nelle applicazioni WPF e nel modello applicativo WPF è possibile dichiarare x:Class come attributo per qualsiasi elemento che costituisce la radice di un file XAML e che viene compilato (nei casi in cui il file XAML è incluso in un progetto di applicazione WPF con l'operazione di compilazione Page) o per la radice di Application nella definizione di un'applicazione WPF compilata. La dichiarazione di x:Class in un elemento diverso da una radice della pagina o dell'applicazione, su un file XAMLWPF non compilato, provoca un errore in fase di compilazione nel compilatore XAML WPF .NET Framework 3.0 e .NET Framework 3.5. Per informazioni su altri aspetti della gestione di x:Class in WPF, vedere Code-behind e XAML in WPF.

x:Class per Windows Workflow Foundation

Per Windows Workflow Foundation, x:Class nomina la classe di un'attività personalizzata creata interamente in XAML o nomina la classe parziale della pagina XAML per un ActivityDesigner con code-behind.

Note sull'utilizzo di Silverlight.

x:Class per Silverlight è documentato separatamente. Per ulteriori informazioni, vedere Funzionalità del linguaggio dello spazio dei nomi XAML (x:).

Vedere anche

Riferimenti

Direttiva x:Subclass

Direttiva x:ClassModifier

Concetti

Classi XAML e personalizzate per WPF

Altre risorse

Tipi migrati da WPF a System.Xaml