Sdílet prostřednictvím


x:Name – direktiva

Jedinečně identifikuje elementy definované XAML v názvovém oboru XAML. Názvové rozsahy XAML a jejich modely jedinečnosti se dají použít u vytvořených objektů, když architektury poskytují rozhraní API nebo implementují chování, které přistupují k grafu objektů vytvořenému xaml za běhu.

Použití atributu XAML

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

Hodnoty XAML

Hodnota Popis
XAMLNameValue Řetězec, který odpovídá omezením XamlName Grammar.

Poznámky

Po x:Name použití na programovací model architektury je název ekvivalentní proměnné, která obsahuje odkaz na objekt nebo instanci vrácenou konstruktorem.

Hodnota x:Name použití direktivy musí být jedinečná v rámci oboru názvů XAML. Ve výchozím nastavení při použití rozhraní .NET XAML Services API je primární názvový rozsah XAML definován v kořenovém elementu XAML jednoho produkčního prostředí XAML a zahrnuje prvky obsažené v tomto produkčním prostředí XAML. Další diskrétní názvové obory XAML, ke kterým může dojít v rámci jednoho produkčního prostředí XAML, je možné definovat architekturami pro řešení konkrétních scénářů. Například ve WPF jsou definovány a vytvořeny nové názvové skopy XAML každou šablonou, která je také definována v tomto produkčním prostředí XAML. Další informace o názvových rozsacích XAML (napsaných pro WPF, ale relevantní pro mnoho konceptů názvových oborů XAML) najdete v tématu WPF XAML Namescopes.

Obecně by nemělo být použito v situacích, x:Name které také používají x:Key. Implementace XAML podle konkrétních existujících architektur zavedly koncepty nahrazení mezi x:Key a x:Name, ale to není doporučený postup. Služby .NET XAML nepodporují takové koncepty nahrazení při zpracování informací o názvu nebo klíči, například INameScope nebo DictionaryKeyPropertyAttribute.

Pravidla pro povolení x:Name a vynucení jedinečnosti názvu jsou potenciálně definována konkrétními implementovými architekturami. Aby bylo možné použít služby .NET XAML Services, měly by být definice architektury jedinečnosti názvového oboru XAML konzistentní s definicí INameScope informací v této dokumentaci a měly by používat stejná pravidla týkající se místa použití informací. Například implementace WPF (Windows Presentation Foundation) rozdělí různé prvky značek do samostatných NameScope oblastí, jako jsou slovníky prostředků, logický strom vytvořený xaml na úrovni stránky, šablony a další odložený obsah a potom vynucuje jedinečnost názvu XAML v rámci každého z těchto oborů názvů XAML.

Pro vlastní typy, které používají zapisovače objektů XAML služby .NET XAML, lze vytvořit nebo změnit vlastnost, která se mapuje na x:Name typ. Toto chování definujete odkazem na název vlastnosti, která se má mapovat s kódem RuntimeNamePropertyAttribute definice typu. RuntimeNamePropertyAttribute je atribut na úrovni typu.

Using.NET služby XAML lze pomocí implementace rozhraní definovat backingovou logiku pro podporu názvového rozsahu XAML v rámci neutrálním INameScope způsobem.

Poznámky k využití WPF

V rámci standardní konfigurace sestavení pro aplikaci WPF, která používá XAML, částečné třídy a kód za kódem, se zadaný x:Name název pole vytvořeného v podkladovém kódu při zpracování XAML úlohou sestavení kompilace značek a toto pole obsahuje odkaz na objekt. Ve výchozím nastavení je vytvořené pole interní. Přístup k poli můžete změnit zadáním atributu x:FieldModifier. Ve WPF a Silverlight je sekvence, že kód kompilace definuje a pojmenuje pole v částečné třídě, ale hodnota je zpočátku prázdná. Pak je vygenerovaná metoda InitializeComponent volána z konstruktoru třídy. InitializeComponent se skládá z FindName volání pomocí každé z x:Name hodnot, které existují v části xaml definované části částečné třídy jako vstupní řetězce. Návratové hodnoty se pak přiřadí k odkazu na pole s tímto názvem, aby se hodnoty polí vyplnily objekty, které byly vytvořeny z analýzy XAML. Spuštění InitializeComponent umožňuje odkazovat na graf objektu doby běhu přímo pomocí x:Name názvu pole nebo pole, a nemusíte volat FindName explicitně, kdykoli potřebujete odkaz na objekt definovaný XAML.

Pro aplikaci WPF, která používá cíle jazyka Microsoft Visual Basic a obsahuje soubory XAML s Page akcí sestavení, se během kompilace vytvoří samostatná referenční vlastnost, která přidá WithEvents klíčové slovo ke všem prvkům x:Name, které mají , pro podporu Handles syntaxe pro delegáty obslužné rutiny událostí. Tato vlastnost je vždy veřejná. Další informace naleznete v tématu Visual Basic a WPF Event Handling.

x:Name procesor WPF XAML používá k registraci názvu do názvového oboru XAML v době načítání, a to i v případech, kdy stránka není zkompilována akcemi sestavení (například volný KÓD XAML slovníku prostředků). Jedním z důvodů tohoto chování je to, že x:Name je potenciálně potřeba pro ElementName vazbu. Podrobnosti najdete v tématu Přehled datových vazeb.

Jak již bylo zmíněno dříve, x:Name (nebo Name) by neměly být použity v situacích, které také používají x:Key. WPF ResourceDictionary má speciální chování, které se definuje jako názvový rozsah XAML, ale vrací neimplementované nebo null hodnoty pro INameScope rozhraní API jako způsob, jak toto chování vynutit. Pokud analyzátor WPF XAML narazí Name nebo x:Name v definovaném ResourceDictionaryXAML , název se nepřidá do žádného názvového oboru XAML. Pokus o nalezení názvu z libovolného FindName názvového oboru XAML a metody nevrátí platné výsledky.

x:Name and Name

Mnoho scénářů aplikací WPF se může vyhnout použití atributu x:Name , protože Name vlastnost závislosti zadaná ve výchozím oboru názvů XAML pro několik důležitých základních tříd, jako FrameworkElement je a FrameworkContentElement splňuje tento stejný účel. Stále existují některé běžné scénáře XAML a WPF, kdy je důležitý přístup kódu k prvku bez Name vlastnosti na úrovni architektury. Například některé animace a scénáře podporují třídy nepodporují Name vlastnost, ale často je třeba odkazovat v kódu, aby bylo možné ovládat animaci. Jako atribut byste měli zadat x:Name na časových osách a transformacích vytvořených v XAML, pokud je budete chtít později odkazovat z kódu.

Pokud Name je k dispozici jako vlastnost třídy Name a x:Name lze ji použít zaměnitelně jako atributy, ale parse výjimka bude mít za následek, pokud jsou oba zadány ve stejném prvku. Pokud je XAML zkompilován, dojde k výjimce u kompilace značek, jinak dojde k načtení.

Name lze nastavit pomocí syntaxe atributu XAML a v kódu pomocí SetValue; mějte však na paměti, že nastavení Name vlastnosti v kódu nevytvoří odkaz na reprezentativní pole v názvovém oboru XAML ve většině případů, kdy je XAML již načten. Místo pokusu o nastavení Name v kódu použijte NameScope metody z kódu proti příslušnému názvovém oboru.

Name lze také nastavit pomocí syntaxe elementu vlastnosti s vnitřním textem, ale to je neobvyklé. Naproti tomu x:Name nelze nastavit v syntaxi elementu vlastnosti XAML nebo v kódu pomocí SetValue; lze jej nastavit pouze pomocí syntaxe atributů u objektů, protože se jedná o direktivu.

Poznámky k používání silverlightu

x:Name program Silverlight je dokumentován samostatně. Další informace najdete v tématu Funkce jazyka XAML (x:) (Silverlight).

Viz také