Attributo x:Key

Identifica in modo univoco gli elementi creati e a cui viene fatto riferimento come risorse e che esistono all'interno di un ResourceDictionary.

Utilizzo attributo XAML

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

Utilizzo degli attributi XAML (ResourceDictionary implicito)

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

Valori XAML

Termine Descrizione
oggetto Qualsiasi oggetto condivisibile. Vedi Riferimenti alle risorse ResourceDictionary e XAML.
stringKeyValue Stringa true usata come chiave, che deve essere conforme alla grammatica XamlName> . Vedi "Grammatica XamlName" di seguito.

Grammatica XamlName

Di seguito è riportata la grammatica normativa per una stringa usata come chiave nell'implementazione XAML piattaforma UWP (Universal Windows Platform) (UWP):

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • I caratteri sono limitati all'intervallo ASCII inferiore e, in particolare, alle lettere maiuscole e minuscole dell'alfabeto romano, alle cifre e al carattere di sottolineatura (_).
  • L'intervallo di caratteri Unicode non è supportato.
  • Un nome non può iniziare con una cifra.

Osservazioni:

Gli elementi figlio di un oggetto ResourceDictionary in genere includono un attributo x:Key che specifica un valore di chiave univoco all'interno di tale dizionario. L'univocità della chiave viene applicata in fase di caricamento dal processore XAML. I valori x:Key non univoci genereranno eccezioni di analisi XAML. Se richiesto dall'estensione di markup {StaticResource}, anche una chiave non risolta genererà eccezioni di analisi XAML.

x:Key e x:Name non sono concetti identici. x:Key viene usato esclusivamente nei dizionari risorse. x:Name viene usato per tutte le aree di XAML. Una chiamata FindName che usa un valore di chiave non recupererà una risorsa con chiave. Gli oggetti definiti in un dizionario risorse possono avere x :Key, x:Name o entrambi. La chiave e il nome non devono corrispondere.

Si noti che nella sintassi implicita mostrata, l'oggetto ResourceDictionary è implicito nel modo in cui il processore XAML produce un nuovo oggetto per popolare un insieme Resources.

L'equivalente del codice di specificare x:Key è qualsiasi operazione che usa una chiave con l'oggetto ResourceDictionary sottostante. Ad esempio, una chiave x:Key applicata nel markup per una risorsa equivale al valore del parametro chiave di Insert quando si aggiunge la risorsa a un ResourceDictionary.

Un elemento in un dizionario risorse può omettere un valore per x:Key se è uno stile di destinazione o ControlTemplate. In ognuno di questi casi la chiave implicita dell'elemento della risorsa è il valore TargetType interpretato come stringa. Per altre info, vedi Guida introduttiva: applicazione di stili ai controlli e riferimenti alle risorse XAML e ResourceDictionary.