Sdílet prostřednictvím


x:Name – atribut

Jedinečně identifikuje prvky objektu pro přístup k objektu instance z kódu na pozadí nebo z obecného kódu. Po použití na podpůrný programovací model lze x:Name považovat za ekvivalent proměnné, která obsahuje referenci na objekt, jak je vráceno konstruktorem.

Použití atributu XAML

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

Hodnoty XAML

Term Description
XAMLNameValue Řetězec, který odpovídá omezením gramatiky XamlName.

Gramatika XamlName

Následuje normativní gramatika pro řetězec, který se používá jako klíč v této implementaci XAML:

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • Znaky jsou omezeny na dolní oblast ASCII a konkrétně na velká a malá písmena, číslice a podtržítko (_).
  • Oblast znaků Unicode není podporována.
  • Název nemůže začínat číslicí. Některé implementace nástrojů předkládají podtržítko (_) na řetězec, pokud uživatel zadá číslici jako počáteční znak, nebo nástroj automaticky vygeneruje hodnoty x:Name na základě jiných hodnot, které obsahují číslice.

Poznámky

Zadaný x:Name se stane názvem pole vytvořeného v podkladovém kódu při zpracování XAML a toto pole obsahuje odkaz na objekt. Proces vytvoření tohoto pole provádí cílové úkoly nástroje MSBuild, které jsou také zodpovědné za spojování částečných tříd souboru XAML a jeho kódu na pozadí. Toto chování není nutně určeno jazykem XAML; jedná se o konkrétní implementaci, kterou programování univerzální platformy Windows (UPW) pro XAML platí pro použití x:Name ve svých programovacích a aplikačních modelech.

Každý definovaný x:Name musí být jedinečný v rámci názvového oboru XAML. Obecně platí, že názvový rozsah XAML je definován na úrovni kořenového prvku načtené stránky a obsahuje všechny prvky pod tímto prvkem na jedné stránce XAML. Další názvové rozsahy XAML jsou definovány libovolnou šablonou ovládacího prvku nebo šablonou dat definovanou na této stránce. Za běhu se vytvoří jiný názvový rozsah XAML pro kořen stromu objektů, který je vytvořen z použité šablony ovládacího prvku, a také pomocí stromů objektů vytvořených z volání XamlReader.Load. Další informace najdete v tématu Názvové rozsahy XAML.

Nástroje návrhu často automaticky generují hodnoty x:Name pro prvky při jejich zavedení do návrhové plochy. Schéma automatického generování se liší podle toho, jakého návrháře používáte, ale typické schéma je generovat řetězec začínající názvem třídy, která podporuje prvek, následovaný zvyšujícím se celým číslem. Pokud například do návrháře zavedete první prvek Button , můžete vidět, že v XAML tento element má hodnotu atributu x:Name "Button1".

x:Name nelze nastavit v syntaxi elementu vlastnosti XAML ani v kódu pomocí SetValue. x:Name lze nastavit pouze pomocí syntaxe atributů XAML u elementů.

Poznámka:

Konkrétně pro aplikace C++/CX se pro kořenový prvek souboru nebo stránky XAML nevytvořilo záložní pole odkazu x:Name . Pokud potřebujete odkazovat na kořenový objekt ze kódu C++, použijte jiná rozhraní API nebo procházení stromu. Můžete například volat FindName pro známý pojmenovaný podřízený element a potom zavolat Parent.

x:Name a další vlastnosti „Name“

Některé typy používané v JAZYCE XAML mají také vlastnost s názvem Name. Například FrameworkElement.Name a TextElement.Name.

Pokud je Name k dispozici jako nastavitelná vlastnost elementu, lze Name a x:Name použít zaměnitelně v XAML; pokud jsou však oba atributy zadány ve stejném prvku, dojde k chybě. Existují také případy, kdy existuje vlastnost Name , ale je určená jen pro čtení (například VisualState.Name). V takovém případě vždy použijete x:Name k pojmenování daného prvku v XAML a název jen pro čtení existuje pro některé méně běžné scénáře kódu.

Všimněte si, FrameworkElement.Name obecně nelze použít jako způsob, jak změnit hodnoty původně nastavené x:Name, i když existují některé scénáře, které jsou výjimkami tohoto obecného pravidla. V typických scénářích je vytvoření a definice názvových oborů XAML operace procesoru XAML. Úprava FrameworkElement.Name za běhu může vést k nekonzistentnímu jmennému prostoru XAML nebo nesouladu názvů soukromých polí, což je obtížné sledovat v kódu.

x:Name a x:Key

x:Name lze použít jako atribut na elementy v ResourceDictionary , aby fungoval jako náhrada atributu x:Key. (Jedná se o pravidlo, že všechny prvky v ResourceDictionary musí mít atribut x:Key nebo x:Name.) To je běžné u animací storyboarded. Další informace najdete v části ResourceDictionary a odkazy na prostředky XAML.