x:Key – direktiva

Jednoznačně identifikuje prvky vytvořené a odkazované ve slovníku definovaném XAML. x:Key Přidání hodnoty do elementu objektu XAML je nejběžnější způsob, jak identifikovat prostředek ve slovníku prostředků, například ve WPF ResourceDictionary.

Použití atributu XAML

<object x:Key="stringKeyValue".../>  
-or-  
<object x:Key="{markupExtensionUsage}".../>  

Použití atributů XAML (specifické pro WPF)

<object.Resources>  
  <object x:Key="stringKeyValue".../>  
</object.Resources>  
-or-  
<object.Resources>  
  <object x:Key="{markupExtensionUsage}".../>  
</object.Resources>  

Hodnoty XAML

Hodnota Popis
stringKeyValue Textový řetězec, který se má použít jako klíč. Textový řetězec musí odpovídat gramatikě XamlName.
markupExtensionUsage V rámci oddělovačů {}rozšíření značek je použití rozšíření značek, které poskytuje objekt, který se má použít jako klíč. Viz poznámky.

Poznámky

x:Key podporuje koncept slovníku prostředků XAML. XAML jako jazyk nedefinuje implementaci slovníku prostředků, která je ponechána na konkrétních architekturách uživatelského rozhraní. Další informace o tom, jak se ve WPF implementují slovníky prostředků XAML, najdete v tématu Přehled prostředků XAML (WPF .NET).

V xaml 2006 a WPF x:Key musí být zadán jako atribut. Stále můžete použít klíče bez řetězce, ale to vyžaduje použití rozšíření značek, aby bylo možné zadat hodnotu neřetěžujícího řetězce ve formuláři atributu. Pokud používáte XAML 2009, x:Key můžete ho zadat jako prvek, který explicitně podporuje slovníky klíčované jinými typy objektů než řetězce bez nutnosti zprostředkující rozšíření značek. Viz část XAML 2009 v tomto tématu. Zbývající část Poznámky se týká konkrétně implementace XAML 2006.

Hodnota atributu x:Key může být libovolný řetězec definovaný v XamlName Grammar nebo může být objekt vyhodnocen prostřednictvím rozšíření značek. Příklad z WPF najdete v části Poznámky k využití WPF.

Podřízené prvky nadřazeného prvku, který je IDictionary implementací, musí obvykle obsahovat x:Key atribut, který určuje jedinečnou hodnotu klíče v rámci tohoto slovníku. Rozhraní můžou implementovat vlastnosti aliasu klíče, které se mají nahradit u x:Key konkrétních typů; typy, které definují takové vlastnosti, by měly být přiřazeny DictionaryKeyPropertyAttribute.

Ekvivalent kódu určení x:Key je klíč, který se používá pro podkladový IDictionarykód . Například x:Key hodnota, která je použita v kódu pro prostředek v WPF je ekvivalentní hodnotě key parametru ResourceDictionary.Add při přidání prostředku do WPF ResourceDictionary v kódu.

Poznámky k využití WPF

Podřízené objekty nadřazeného objektu, který je IDictionary implementací, například WPF ResourceDictionary, musí obvykle obsahovat x:Key atribut a hodnota klíče musí být v tomto slovníku jedinečná. Existují dvě výjimky:

  • Některé typy WPF deklarují implicitní klíč pro použití slovníku. Například Style s , nebo DataTemplate s , DataTypemůže být v ResourceDictionary a použít TargetTypeimplicitní klíč.

  • WPF podporuje koncept slovníku sloučených prostředků. Klíče lze sdílet mezi sloučenými slovníky a chováním sdíleného klíče lze získat přístup pomocí FindResource. Další informace najdete v tématu Slovníky sloučených prostředků.

V celkové implementaci WPF XAML a aplikačním modelu není jedinečnost klíče kontrolována kompilátorem značek XAML. Místo toho chybějící nebo neunique x:Key hodnoty způsobují chyby analyzátoru XAML v čase načítání. Zpracování slovníků pro WPF v sadě Visual Studio ale může tyto chyby často poznamenat ve fázi návrhu.

Všimněte si, že v syntaxi zobrazené je objekt implicitní v tom, ResourceDictionary jak procesor WPF XAML vytvoří kolekci k naplnění Resources kolekce. A ResourceDictionary není obvykle poskytován explicitně jako prvek v revizí, i když to může být v některých případech, pokud by chtěla srozumitelnost (jedná se o prvek objektu kolekce mezi Resources elementem property a položkami v rámci daného slovníku). Informace o tom, proč je objekt kolekce téměř vždy implicitní prvek v revizí, naleznete v tématu Syntaxe XAML Podrobně.

V implementaci WPF XAML je zpracování klíčů slovníku prostředků definováno ResourceKey abstraktní třídou. Procesor WPF XAML ale vytváří různé základní typy rozšíření pro klíče na základě jejich použití. Například klíč pro DataTemplate nebo jakoukoli odvozenou třídu se zpracovává samostatně a vytváří jedinečný DataTemplateKey objekt.

Klíče a názvy používají v základní definici XAML různé direktivy a elementy jazyka (x:Key versus x:Name). Klíče a názvy se také používají v různých situacích definicí WPF a aplikací těchto konceptů. Podrobnosti naleznete v tématu WPF XAML Namescopes.

Jak jsme uvedli dříve, hodnota klíče lze zadat prostřednictvím rozšíření značek a může být jiná než řetězcová hodnota. Příkladem scénáře WPF je, že hodnota x:Key může být ComponentResourceKey. Některé ovládací prvky zpřístupňují klíč stylu tohoto typu pro prostředek vlastního stylu, který ovlivňuje část vzhledu a chování tohoto ovládacího prvku bez úplné nahrazení stylu. Příkladem takového klíče je ButtonStyleKey.

Funkce sloučeného slovníku WPF zavádí další důležité informace o jedinečnosti klíče a chování vyhledávání klíčů. Další informace najdete v tématu Slovníky sloučených prostředků.

XAML 2009

XAML 2009 uvolní omezení, které x:Key je vždy poskytováno ve formě atributu.

Ve WPF můžete použít funkce XAML 2009, ale pouze pro XAML, který není zkompilován značek. Kód XAML zkompilovaný pro WPF a formát BAML XAML v současné době nepodporují klíčová slova a funkce XAML 2009.

V části XAML 2009 můžete zadat x:Key elementy pomocí následujícího použití:

Použití elementu XAML (pouze XAML 2009)

<object>  
  <x:Key>  
keyObject  
  </x:Key>  
...  
</object>  

Hodnoty XAML

Hodnota Popis
keyObject Object element pro objekt, který se používá jako klíč pro danou object ve specializovaném slovníku.
  • Tady se nezobrazuje kontejner nebo nadřazený objekt pro tento druh použití. object očekává se, že bude podřízeným prvkem objektu, který představuje specializovanou implementaci slovníku. keyObject očekává se, že se jedná o instanci objektu (nebo hodnotu typu hodnoty), která je vhodná jako klíč pro konkrétní specializovanou implementaci slovníku.

  • WPF neimplementuje slovníky, které vyžadují toto použití. Klíče objektů jsou obecnější funkcí jazyka XAML, což může být užitečné pro určité scénáře vlastního slovníku, ve kterých je žádoucí vytvořit slovník v jazyce XAML. U funkcí WPF, jako jsou implicitní styly, které pro prostředky používají jiné než řetězcové klíče, existují jiné techniky pro vytvoření nebo zadání klíčů, takže použití klíče objektu není nutné.

  • keyObject může být také použití rozšíření značek ve formuláři objektu, nikoli přímé instance objektu.

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

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

Viz také