Attributo x:Name

Aggiornamento: novembre 2007

Identifica in modo univoco gli elementi oggetto per accedere all'elemento per cui è stata creata un'istanza tramite code-behind o il codice generale. Una volta applicato a un modello di programmazione di supporto, l'attributo x:Name può essere considerato equivalente alla variabile che contiene un riferimento a un oggetto, come restituito da un costruttore.

Utilizzo della sintassi XAML per gli attributi

<object x:Name="XAMLNameValue".../>

Valori XAML

XAMLNameValue

Stringa conforme alle limitazioni dell'oggetto Grammatica XamlName.

Note

Con la configurazione di compilazione standard per un progetto di applicazione WPF che utilizza XAML, classi parziali e code-behind, l'oggetto x:Name specificato diviene il nome di un campo creato nel code-behind quando viene elaborato XAML e tale campo contiene un riferimento all'oggetto.

Per impostazione predefinita, il campo creato è interno. È possibile modificare l'accesso al campo specificando l'attributo x:FieldModifier.

In caso di un'applicazione che utilizza le destinazioni di Microsoft Visual Basic .NET e include i file XAML, viene creata una proprietà di riferimento separata durante la compilazione, che aggiunge la parola chiave WithEvents a tutti gli elementi che dispongono di un attributo x:Name per supportare la sintassi Handles per i delegati del gestore eventi. Questa proprietà è sempre pubblica. Per informazioni dettagliate, vedere Visual Basic e la gestione degli eventi WPF.

L'attributo x:Name deve essere univoco all'interno di un namescope. Nei casi XAML più comuni, il namescope principale viene definito da quegli elementi contenuti in una singola pagina XAML. Ogni modello specificato nella pagina definisce namescope aggiuntivi. Per ulteriori informazioni relative alle considerazioni sul namescope, vedere Ambiti dei nomi WPF.

L'attributo x:Name viene utilizzato da un processore XAML per registrare un nome in un namescope, persino nei casi in cui la pagina non viene compilata (ad esempio, nella sintassi XAML libera). Questa situazione si verifica perché l'attributo x:Name può essere necessario per l'associazione ElementName. Per informazioni dettagliate, vedere Cenni preliminari sull'associazione dati.

x:Name non può essere applicato in alcuni ambiti della programmazione WPF. Gli elementi contenuti in ResourceDictionary, ad esempio, non possono disporre di nomi, perché ResourceDictionary segue un comportamento speciale, autodefinendosi come namescope XAML ma restituendo Not Implemented per le API INameScope principali.

Le regole relative all'autorizzazione dell'attributo x:Name nonché gli ambiti di unicità vengono definiti dall'implementazione del framework Windows Presentation Foundation (WPF) sottostante che divide i vari elementi di markup in intervalli NameScope separati, ad esempio dizionari risorse, albero logico creato da XAML a livello di pagina, modelli e così via.

Alcune applicazioni a livello di framework WPF possono non utilizzare l'attributo x:Name, poiché la proprietà di dipendenza Name specificata all'interno dello spazio dei nomi WPF per molte delle classi base importanti, ad esempio FrameworkElement/FrameworkContentElement soddisfa questo stesso scopo. Esistono ancora alcuni tipici scenari relativi alla sintassi XAML e al framework in cui è necessario l'accesso di codice a un elemento senza la proprietà Name, soprattutto in alcune classi di supporto dell'animazione e dello storyboard. Ad esempio, è necessario specificare l'attributo x:Name nelle sequenze temporali e nelle trasformazioni create in XAML, se si intende utilizzarle come riferimento dal codice.

Se l'oggetto Name è disponibile come proprietà nella classe, gli oggetti Name e x:Name possono essere utilizzati in modo intercambiabile come attributi, tuttavia, se entrambi vengono specificati nello stesso elemento, verrà generato un errore.

Nel caso di elementi personalizzati, la proprietà (può essere una proprietà CLR o una proprietà di dipendenza) che esegue il mapping all'attributo x:Name in qualsiasi oggetto specificato può essere stabilita o modificata definendo tale proprietà con l'oggetto RuntimeNamePropertyAttribute nel codice di dichiarazione della proprietà.

L'oggetto Name può essere impostato utilizzando la sintassi per gli attributi XAML e nel codice mediante l'oggetto SetValue; notare, tuttavia, che in alcune circostanze l'impostazione della proprietà Name nel codice non crea il riferimento rappresentativo del campo all'interno del namescope. Anziché tentare di impostare Name nel codice, utilizzare i metodi NameScope dal codice sul namescope corretto.

È possibile impostare Name utilizzando anche sintassi per gli elementi proprietà XAML con testo interno, ma non è un caso frequente. Non è possibile impostare x:Name in sintassi di elementi proprietà XAML o nel codice utilizzando SetValue; tale impostazione può essere effettuata solo utilizzando la sintassi per gli attributi sugli elementi.

Vedere anche

Concetti

Strutture ad albero in WPF

Riferimenti

Name

Name