Condividi tramite


Estensione di 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.

Utilizzo degli attributi XAML

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

Valori XAML

Valore Descrizione
prefix Opzionale. 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 dei prefissi. 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. Il typeName specificato è 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 apportano 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 riferimento x:Static crea una stringa di testo e una conversione di valori 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 degli attributi è la sintassi più comune usata con questa estensione di markup. Token stringa fornito dopo l'assegnazione della stringa di identificatore x:Static come valore Member della classe di 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 classe StaticExtension.

x:Static è un'estensione di markup. Tutte le estensioni di markup in XAML usano i caratteri { e } nella sintassi dell'attributo, ovvero la convenzione con cui un processore XAML riconosce che un'estensione di markup deve fornire un valore. Per altre informazioni sulle estensioni di markup, vedere Markup Extensions for XAML Overview.For more information about markup extensions, see 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, puoi usare un riferimento x:Static con un mapping dello spazio dei nomi XAML allo spazio dei nomi CLR System e all'assembly mscorlib per fare riferimento alle proprietà statiche della classe Environment.

  • 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, vedere spazi dei nomi XAML e mapping degli spazi 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, vedere spazi dei nomi XAML e Mapping degli spazi dei nomi per XAML WPF.

Vedere anche