Spazi dei nomi XAML

XAML usa l'attributo xmlns XML per le dichiarazioni dello spazio dei nomi. Esistono due dichiarazioni dello spazio dei nomi XAML sempre all'interno dell'elemento radice di un file XAML. Il primo definisce lo spazio dei nomi predefinito:

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

Lo spazio dei nomi predefinito specifica che gli elementi definiti all'interno del file XAML senza prefisso fanno riferimento alle classi dell'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI), ad esempio ContentPage, Labele Button.

La seconda dichiarazione dello spazio dei nomi usa il x prefisso :

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

XAML usa prefissi per dichiarare spazi dei nomi non predefiniti, con il prefisso usato quando si fa riferimento ai tipi all'interno dello spazio dei nomi. La x dichiarazione dello spazio dei nomi specifica che gli elementi definiti in XAML con un prefisso di x vengono usati per gli elementi e gli attributi intrinseci a XAML (in particolare la specifica XAML 2009).

Nella tabella seguente vengono descritti i x costrutti supportati da .NET MAUI:

Costrutto Descrizione
x:Arguments Specifica gli argomenti del costruttore per un costruttore non predefinito o per una dichiarazione di oggetto metodo factory.
x:Class Specifica lo spazio dei nomi e il nome della classe per una classe definita in XAML. Il nome della classe deve corrispondere al nome della classe del file code-behind. Si noti che questo costrutto può essere visualizzato solo nell'elemento radice di un file XAML.
x:DataType Specifica il tipo dell'oggetto a cui verrà associato l'elemento XAML e ai relativi elementi figlio.
x:FactoryMethod Specifica un metodo factory che può essere utilizzato per inizializzare un oggetto .
x:FieldModifier Specifica il livello di accesso per i campi generati per gli elementi XAML denominati.
x:Key Specifica una chiave univoca definita dall'utente per ogni risorsa in un oggetto ResourceDictionary. Il valore della chiave viene usato per recuperare la risorsa XAML e viene in genere usato come argomento per l'estensione StaticResource di markup.
x:Name Specifica un nome di oggetto di runtime per l'elemento XAML. L'impostazione x:Name è simile alla dichiarazione di una variabile nel codice.
x:TypeArguments Specifica gli argomenti di tipo generico per il costruttore di un tipo generico.

Per altre informazioni sull'attributo x:DataType , vedere Binding compilati. Per altre informazioni sull'attributo x:FieldModifier , vedere Modificatori di campo. Per altre informazioni sugli x:Arguments attributi e x:FactoryMethod , vedere Passare argomenti. Per altre informazioni sull'attributo x:TypeArguments , vedere Generics.

Costrutto Descrizione
x:Arguments Specifica gli argomenti del costruttore per un costruttore non predefinito o per una dichiarazione di oggetto metodo factory.
x:Class Specifica lo spazio dei nomi e il nome della classe per una classe definita in XAML. Il nome della classe deve corrispondere al nome della classe del file code-behind. Si noti che questo costrutto può essere visualizzato solo nell'elemento radice di un file XAML.
x:ClassModifier Specifica il livello di accesso per la classe generata nell'assembly.
x:DataType Specifica il tipo dell'oggetto a cui verrà associato l'elemento XAML e ai relativi elementi figlio.
x:FactoryMethod Specifica un metodo factory che può essere utilizzato per inizializzare un oggetto .
x:FieldModifier Specifica il livello di accesso per i campi generati per gli elementi XAML denominati.
x:Key Specifica una chiave univoca definita dall'utente per ogni risorsa in un oggetto ResourceDictionary. Il valore della chiave viene usato per recuperare la risorsa XAML e viene in genere usato come argomento per l'estensione StaticResource di markup.
x:Name Specifica un nome di oggetto di runtime per l'elemento XAML. L'impostazione x:Name è simile alla dichiarazione di una variabile nel codice.
x:TypeArguments Specifica gli argomenti di tipo generico per il costruttore di un tipo generico.

Per altre informazioni sull'attributo x:ClassModifier , vedere Modificatori di classe. Per altre informazioni sull'attributo x:DataType , vedere Binding compilati. Per altre informazioni sull'attributo x:FieldModifier , vedere Modificatori di campo. Per altre informazioni sugli x:Arguments attributi e x:FactoryMethod , vedere Passare argomenti. Per altre informazioni sull'attributo x:TypeArguments , vedere Generics.

Nota

Oltre ai costrutti elencati in precedenza, .NET MAUI include anche estensioni di markup che possono essere utilizzate tramite il prefisso dello x spazio dei nomi. Per altre informazioni, vedere Utilizzare estensioni di markup XAML.

In XAML le dichiarazioni dello spazio dei nomi ereditano dall'elemento padre all'elemento figlio. Pertanto, quando si definisce uno spazio dei nomi nell'elemento radice di un file XAML, tutti gli elementi all'interno del file ereditano la dichiarazione dello spazio dei nomi.

Dichiarare gli spazi dei nomi per i tipi

È possibile fare riferimento ai tipi in XAML dichiarando uno spazio dei nomi XAML con un prefisso, con la dichiarazione dello spazio dei nomi specificando il nome dello spazio dei nomi CLR (Common Language Runtime) e facoltativamente un nome di assembly. Questo risultato viene ottenuto definendo i valori per le parole chiave seguenti all'interno della dichiarazione dello spazio dei nomi:

  • clr-namespace: oppure using: : lo spazio dei nomi CLR dichiarato all'interno dell'assembly che contiene i tipi da esporre come elementi XAML. Questa parola chiave è obbligatoria.
  • assembly= : assembly contenente lo spazio dei nomi CLR a cui si fa riferimento. Questo valore è il nome dell'assembly, senza l'estensione di file. Il percorso dell'assembly deve essere stabilito come riferimento nel progetto che contiene il file XAML che farà riferimento all'assembly. Questa parola chiave può essere omessa se il valore clr-namespace si trova nello stesso assembly del codice dell'app che fa riferimento ai tipi.

Nota

Il carattere che separa il clr-namespace token o using dal valore è costituito da due punti, mentre il carattere che separa il assembly token dal valore è un segno di uguale. Il carattere da usare tra i due token è un punto e virgola.

L'esempio di codice seguente mostra una dichiarazione dello spazio dei nomi XAML:

<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
  ...
</ContentPage>

In alternativa, è possibile scrivere come segue:

<ContentPage ... xmlns:local="using:MyMauiApp">
  ...
</ContentPage>

Il local prefisso è una convenzione usata per indicare che i tipi all'interno dello spazio dei nomi sono locali per l'app. In alternativa, se i tipi si trovano in un assembly diverso, il nome dell'assembly deve essere definito anche nella dichiarazione dello spazio dei nomi:

<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
  ...
</ContentPage>

Il prefisso dello spazio dei nomi viene quindi specificato quando si dichiara un'istanza di un tipo da uno spazio dei nomi importato:

<controls:Expander IsExpanded="True">
    ...
</controls:Expander>

Per informazioni sulla definizione di uno schema dello spazio dei nomi personalizzato, vedere Schemi dello spazio dei nomi personalizzati.