Spazi dei nomi XAML e mapping dello spazio dei nomi

Aggiornamento: novembre 2007

In questo argomento vengono illustrati la presenza e lo scopo dei due mapping dello spazio dei nomi XML nel tag radice di ogni file Extensible Application Markup Language (XAML). Viene inoltre illustrato come produrre mapping simili per l'utilizzo di elementi definiti nel codice e/o all'interno di assembly separati.

Nel presente argomento sono contenute le seguenti sezioni.

  • Dichiarazioni dello spazio dei nomi XAML e WPF
  • Mapping a classi e assembly personalizzati
  • Mapping di spazi dei nomi CLR a spazi dei nomi XML in un assembly
  • Argomenti correlati

Dichiarazioni dello spazio dei nomi XAML e WPF

All'interno delle dichiarazioni dello spazio dei nomi nel tag radice di molti file Extensible Application Markup Language (XAML) sono presenti due dichiarazioni di spazi dei nomi XML. La prima dichiarazione esegue il mapping dello spazio dei nomi Windows Presentation Foundation (WPF) complessivo come predefinito:

xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"

La seconda dichiarazione esegue il mapping di uno spazio dei nomi Extensible Application Markup Language (XAML) separato, in genere al prefisso x:.

xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"

La relazione tra queste dichiarazioni consiste nel fatto che XAML è una definizione del linguaggio e WPF è un'implementazione che utilizza XAML come linguaggio. Il linguaggio XAML specifica alcuni elementi di linguaggio che è necessario implementare per garantire la conformità. Ognuno di questi elementi deve essere accessibile tramite implementazioni del processore XAML che utilizzano lo spazio dei nomi XAML. L'implementazione WPF e il relativo modello di programmazione previsto in genere utilizzano lo spazio dei nomi XML predefinito per le proprie API e un prefisso mappato separato per la sintassi del markup prevista in XAML. Per convenzione, il prefisso è x: e questa stessa convenzione x: è rispettata dai modelli di progetto, dal codice di esempio e dalla documentazione delle funzionalità del linguaggio in questo SDK. Lo spazio dei nomi XAML definisce molte funzionalità di utilizzo comune, necessarie anche per le applicazioni WPF di base. Ad esempio, per unire code-behind a un file XAML tramite una classe parziale, è necessario denominare la classe come attributo x:Class nell'elemento radice del file XAML relativo. In alternativa, per qualsiasi elemento definito in una pagina XAML a cui si desidera accedere come risorsa con chiave è necessario che l'attributo x:Key sia impostato sull'elemento in questione. Per ulteriori informazioni su questi e altri aspetti di XAML, vedere Cenni preliminari su XAML o Terminologia della sintassi XAML.

Mapping a classi e assembly personalizzati

È possibile eseguire il mapping di spazi dei nomi XML ad assembly utilizzando una serie di token all'interno di una dichiarazione di prefisso xmlns, eseguendo una procedura analoga a quella del mapping degli spazi dei nomi WPF e XAML standard ai prefissi.

La sintassi accetta i token denominati e i valori riportati di seguito:

clr-namespace:: lo spazio dei nomi Common Language Runtime (CLR) dichiarato nell'assembly che contiene i tipi pubblici da esporre come elementi.

assembly=: l'assembly che contiene l'intero spazio dei nomi CLR a cui si fa riferimento, o parte di esso. Il valore è dato in genere dal nome dell'assembly, non dal percorso. Il percorso dell'assembly deve essere stabilito come riferimento al progetto nel file di progetto che produce XAML compilato. Se lo si desidera, per incorporare il controllo della versione e la firma con nome sicuro, il valore può essere dato da una stringa, come definito nell'oggetto AssemblyName.

Si noti che il carattere che separa il token clr-namespace dal valore è il segno di due punti (:), mentre il carattere che separa il token assembly dal valore è un segno di uguale (=). Il carattere da utilizzare tra i due token è il segno di punto e virgola. Non includere inoltre spazi vuoti in alcun punto della dichiarazione. Ad esempio:

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

Mapping ad assembly correnti

È possibile omettere assembly se clr-namespace a cui si fa riferimento è definito all'interno dello stesso assembly del codice dell'applicazione che fa riferimento alle classi personalizzate. In alternativa, una sintassi equivalente appropriata consiste nello specificare assembly= senza token di stringa dopo il segno di uguale.

Non è possibile utilizzare le classi personalizzate come elemento radice di una pagina se definite nello stesso assembly. Non è necessario eseguire il mapping delle classi parziali, ma solo di quelle che non costituiscono la classe parziale di una pagina dell'applicazione se si intende fare riferimento a esse come elementi in XAML.

Mapping di spazi dei nomi CLR a spazi dei nomi XML in un assembly

WPF definisce un attributo CLR che viene utilizzato dai processori XAML per eseguire il mapping di più spazi dei nomi CLR a un singolo spazio dei nomi XML. L'attributo XmlnsDefinitionAttribute viene posizionato al livello dell'assembly nel codice sorgente che produce l'assembly. Nel codice sorgente dell'assembly WPF questo attributo viene utilizzato per eseguire il mapping di diversi spazi dei nomi comuni, quali System.Windows e System.Windows.Controls, allo spazio dei nomi https://schemas.microsoft.com/winfx/2006/xaml/presentation.

XmlnsDefinitionAttribute accetta due parametri: il nome dello spazio dei nomi XML e quello dello spazio dei nomi CLR. Possono esistere più XmlnsDefinitionAttribute per eseguire il mapping di più spazi dei nomi CLR allo stesso spazio dei nomi XML. Dopo avere eseguito il mapping, è possibile fare riferimento ai membri degli spazi dei nomi senza nome completo fornendo l'istruzione using appropriata nella pagina code-behind di classe parziale. Per informazioni dettagliate, vedere XmlnsDefinitionAttribute.

Vedere anche

Concetti

Cenni preliminari su XAML

Altre risorse

Informazioni sugli spazi dei nomi XML