Estensione del markup x:Static

Fa riferimento a qualsiasi entità di codice statica per valore definita in un modo conforme a CLS (Common Language Specification). La proprietà statica a cui viene fatto riferimento può essere usata per fornire il valore di una proprietà in XAML.

Uso della sintassi XAML per gli attributi

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

Valori XAML

Valore Descrizione
prefix (Facoltativo). Prefisso che fa riferimento a uno spazio dei nomi XAML mappato e non predefinito. prefix viene visualizzato in modo esplicito nell'utilizzo perché raramente si fa riferimento a proprietà statiche provenienti da uno spazio dei nomi XAML predefinito. Vedere la sezione Osservazioni.
typeName Obbligatorio. Nome del tipo che definisce il membro statico desiderato.
staticMemberName Obbligatorio. Nome del membro del valore statico desiderato (una costante, una proprietà statica, un campo o un valore di enumerazione).

Osservazioni

L'entità di codice a cui viene fatto riferimento deve essere una delle seguenti:

  • Costante
  • Proprietà statica
  • Un campo
  • Valore di enumerazione

Se si specifica un'altra entità di codice, ad esempio una proprietà non statica, viene generato un errore in fase di compilazione se il markup XAML viene compilato o un'eccezione di analisi in fase di caricamento XAML.

Puoi fare x:Static riferimenti a campi o proprietà statici che non si trovano nello spazio dei nomi XAML predefinito per il documento XAML corrente. Tuttavia, questo richiede un mapping del prefisso. Gli spazi dei nomi XAML sono quasi sempre definiti sull'elemento radice del documento XAML.

Le operazioni di ricerca per le proprietà statiche possono essere eseguite dai servizi XAML .NET e dai lettori XAML e dai writer XAML, quando vengono eseguite con il contesto dello schema XAML predefinito. Questo contesto dello schema XAML può usare la reflection CLR per fornire i valori statici necessari per la costruzione dell'oggetto grafico. L'opzione typeName specificata è in realtà un nome di tipo XAML, non un nome di tipo CLR, anche se si tratta essenzialmente dello stesso nome quando si usa il contesto dello schema XAML predefinito o quando si usano tutti i framework XAML basati su CLR esistenti.

Prestare attenzione quando si effettuano x:Static riferimenti che non sono direttamente il tipo del valore di una proprietà. Nella sequenza di elaborazione XAML, i valori forniti da un'estensione di markup non richiamano la conversione di valori aggiuntivi. Questo vale anche se il x:Static riferimento crea una stringa di testo e una conversione di valori di valore per i valori di attributo in base alla stringa di testo si verifica in genere per quel membro specifico o per qualsiasi valore membro del tipo restituito.

La sintassi per gli attributi è quella più comunemente utilizzata con questa estensione di markup. Il token di stringa fornito dopo la stringa dell'identificatore x:Static viene assegnato come valore Member della classe dell'estensione StaticExtension sottostante.

Esistono due altri utilizzi XAML tecnicamente possibili. Tuttavia, questi utilizzi sono meno comuni perché sono inutilmente verbosi:

  1. Sintassi degli elementi oggetto.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Sintassi dell'attributo con proprietà Member esplicita per la stringa di inizializzazione.

    <object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
    

Nell'implementazione dei servizi XAML .NET la gestione per questa estensione di markup è definita dalla StaticExtension classe .

x:Static è un'estensione di markup. Tutte le estensioni di markup in XAML usano i { caratteri e } nella sintassi degli attributi, ovvero la convenzione con cui un processore XAML riconosce che un'estensione di markup deve fornire un valore. Per ulteriori informazioni sulle estensioni di markup, vedere Markup Extensions for XAML Overview.

Note sull'utilizzo di WPF

Lo spazio dei nomi XAML predefinito usato per la programmazione WPF non contiene molte proprietà statiche utili e la maggior parte delle proprietà statiche utili include supporto, ad esempio convertitori di tipi che facilitano l'utilizzo senza richiedere {x:Static} . Per le proprietà statiche, devi eseguire il mapping di un prefisso per uno spazio dei nomi XAML se è true uno dei seguenti:

  • Si fa riferimento a un tipo esistente in WPF, ma non fa parte dello spazio dei nomi XAML predefinito per WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation). Si tratta di uno scenario piuttosto comune per l'uso di x:Static. Ad esempio, è possibile usare un x:Static riferimento con un mapping dello spazio dei nomi XAML allo spazio dei nomi CLR e all'assembly System mscorlib per fare riferimento alle proprietà statiche della Environment classe .

  • Si fa riferimento a un tipo da un assembly personalizzato.

  • Si fa riferimento a un tipo esistente in un assembly WPF, ma tale tipo si trova all'interno di uno spazio dei nomi CLR non mappato per far parte dello spazio dei nomi XAML predefinito WPF. Il mapping degli spazi dei nomi CLR nello spazio dei nomi XAML predefinito per WPF viene eseguito dalle definizioni nei vari assembly WPF . Per altre informazioni su questo concetto, vedi Spazi dei nomi XAML e Mapping dello spazio dei nomi per XAML WPF. Gli spazi dei nomi CLR non mappati possono esistere se lo spazio dei nomi CLR è composto principalmente da definizioni di classe non destinate in genere a XAML, ad esempio System.Windows.Threading.

Per altre informazioni su come usare prefissi e spazi dei nomi XAML per WPF, vedi Spazi dei nomi XAML e Mapping dello spazio dei nomi per XAML WPF.

Vedi anche