Attributo x:Key

Aggiornamento: novembre 2007

Identifica in modo univoco gli elementi che vengono creati, a cui viene fatto riferimento come risorse e che sono presenti in un oggetto ResourceDictionary.

Utilizzo della sintassi XAML per gli attributi

<object.Resources>
  <object x:Key="stringKeyValue".../>
</object.Resources>

Valori XAML

stringKeyValue

Stringa effettiva utilizzata come chiave, che deve essere conforme alla Grammatica XamlName.

-oppure-

Estensione di markup che fornisce un tipo di oggetto alternativo che funge da chiave. Vedere la sezione Osservazioni.

Note

Gli elementi figlio di un elemento padre che è un'implementazione di IDictionary, ad esempio ResourceDictionary, devono in genere includere un attributo x:Key che specifica un valore di chiave univoco in tale dizionario. Fanno eccezione un oggetto Style con TargetType o un oggetto DataTemplate con DataType, ciascuno dei quali dispone già di una chiave implicita. L'univocità della chiave è applicata in fase di caricamento dall'implementazione del processore XAMLWPF. Valori x:Key mancanti e/o non univoci genereranno errori in fase di caricamento.

Il valore di attributo di x:Key può essere qualsiasi stringa definita nella Grammatica XamlName o un oggetto valutato tramite un'estensione di markup. Ad esempio, il valore di x:Key può essere ComponentResourceKey. Questo scenario viene utilizzato quando determinati controlli espongono una chiave di stile che può essere utilizzata per creare una risorsa di stile personalizzata che influenza l'aspetto di tale controllo senza sostituirne totalmente lo stile. Un esempio di questo tipo di chiave è ButtonStyleKey.

Si noti che nella sintassi illustrata, l'oggetto ResourceDictionary è implicito nel modo in cui il processore XAML produce un insieme per compilare un insieme Resources e non viene in genere fornito in modo esplicito come elemento nel markup, benché ciò sia possibile se lo si ritiene opportuno per motivi di chiarezza (si tratterebbe di un elemento dell'oggetto Collection tra l'elemento di proprietà Resources e le voci al suo interno che compilano il dizionario). Per informazioni dettagliate sul motivo per cui un oggetto Collection sia un elemento implicito nel markup, vedere Terminologia della sintassi XAML.

Nell'implementazione del processore XAML WPF, la gestione di questa estensione di markup viene definita dalla classe astratta ResourceKey. Il processore XAMLWPF, tuttavia, produce tipi di estensione sottostanti diversi per le chiavi in base al relativo utilizzo. Ad esempio, la chiave per DataTemplate o per le classi derivate viene gestita separatamente e produce un oggetto DataTemplateKey distinto.

Chiavi e nomi non sono concetti identici, infatti si escludono a vicenda secondo la definizione WPF di questi concetti. Per informazioni dettagliate, vedere Ambiti dei nomi WPF.

L'equivalente della specifica di x:Key nel codice è la chiave, così come viene utilizzata in qualsiasi operazione che prevede l'impiego di una chiave con IDictionary sottostante. Ad esempio, x:Key applicato nel markup a una risorsa equivale al valore del parametro key di ResourceDictionary.Add quando si aggiunge la risorsa a un oggetto ResourceDictionary. x:Key è una funzionalità del linguaggio XAML non destinata esclusivamente a ResourceDictionary, benché questa sia l'applicazione più frequente di x:Key nell'implementazione WPF di XAML.

Vedere anche

Concetti

Cenni preliminari sulle risorse

Risorse e codice

Riferimenti

Estensione del markup StaticResource