Spazi dei nomi XAML in Xamarin.Forms
XAML usa l'attributo XMLns per le dichiarazioni dello spazio dei nomi. Questo articolo presenta la sintassi dello spazio dei nomi XAML e illustra come dichiarare uno spazio dei nomi XAML per accedere a un tipo.
Panoramica
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, come illustrato nell'esempio di codice XAML seguente:
xmlns="http://xamarin.com/schemas/2014/forms"
Lo spazio dei nomi predefinito specifica che gli elementi definiti all'interno del file XAML senza prefisso fanno riferimento a Xamarin.Forms classi, ad esempio ContentPage
.
La seconda dichiarazione dello spazio dei nomi usa il x
prefisso , come illustrato nell'esempio di codice XAML seguente:
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 all'interno del codice XAML con un prefisso di x
vengono usati per elementi e attributi intrinseci a XAML (in particolare la specifica XAML 2009).
Nella tabella seguente vengono descritti gli attributi dello x
spazio dei nomi supportati da Xamarin.Forms:
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 Passaggio di argomenti in XAML. Per altre informazioni sull'attributo x:TypeArguments
, vedere Generics in XAML con Xamarin.Forms.
Nota
Oltre agli attributi dello spazio dei nomi elencati in precedenza, Xamarin.Forms include anche estensioni di markup che possono essere utilizzate tramite il prefisso dello x
spazio dei nomi. Per altre informazioni, vedere Utilizzo di 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.
Dichiarazione di 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: o 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 che contiene 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 file di 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'applicazione che fa riferimento ai tipi.
Si noti che il carattere che separa il clr-namespace
token o using
dal relativo valore è un due punti, mentre il carattere che separa il assembly
token dal relativo 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:HelloWorld" ...>
...
</ContentPage>
In alternativa, è possibile scrivere come segue:
<ContentPage ... xmlns:local="using:HelloWorld" ...>
...
</ContentPage>
Il local
prefisso è una convenzione usata per indicare che i tipi all'interno dello spazio dei nomi sono locali per l'applicazione. 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, come illustrato nell'esempio di codice XAML seguente:
<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
...
</ContentPage>
Il prefisso dello spazio dei nomi viene quindi specificato quando si dichiara un'istanza di un tipo da uno spazio dei nomi importato, come illustrato nell'esempio di codice XAML seguente:
<ListView ...>
<ListView.Behaviors>
<behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
</ListView.Behaviors>
</ListView>
Per informazioni sulla definizione di uno schema dello spazio dei nomi personalizzato, vedere Schemi dello spazio dei nomi personalizzati XAML.
Riepilogo
Questo articolo ha introdotto la sintassi dello spazio dei nomi XAML e ha illustrato come dichiarare uno spazio dei nomi XAML per accedere a un tipo. XAML usa l'attributo xmlns
XML per le dichiarazioni dello spazio dei nomi e i tipi possono essere referenziati in XAML dichiarando uno spazio dei nomi XAML con un prefisso.