DynamicResource – rozšíření značek

Poskytuje hodnotu pro jakýkoli atribut vlastnosti XAML odložením této hodnoty odkazem na definovaný prostředek. Chování vyhledávání pro daný prostředek je podobné vyhledávání za běhu.

Použití atributu XAML

<object property="{DynamicResource key}" ... />  

Použití elementu vlastnosti XAML

<object>  
  <object.property>  
    <DynamicResource ResourceKey="key" ... />  
  </object.property>  
</object>  

Hodnoty XAML

Hodnota Popis
key Klíč požadovaného prostředku. Tento klíč byl původně přiřazen direktivou x:Key, pokud byl prostředek vytvořen v kódu nebo byl zadán jako key parametr při voláníResourceDictionary.Add, pokud byl prostředek vytvořen v kódu.

Poznámky

Během DynamicResource počáteční kompilace vytvoří dočasný výraz, a proto odloží vyhledávání pro prostředky, dokud se požadovaná hodnota prostředku ve skutečnosti nevyžaduje k vytvoření objektu. To může být možné po načtení stránky XAML. Hodnota prostředku bude nalezena na základě hledání klíčů u všech aktivních slovníků prostředků počínaje aktuálním oborem stránky a nahradí se zástupným výrazem z kompilace.

Důležité

Pokud jde o prioritu vlastnosti závislosti, výraz je ekvivalentní pozici, DynamicResource kde je použit dynamický odkaz na prostředek. Pokud nastavíte místní hodnotu pro vlastnost, která dříve měla DynamicResource výraz jako místní hodnotu, DynamicResource je zcela odebrána. Podrobnosti najdete v tématu Priorita hodnoty vlastnosti závislosti.

Některé scénáře přístupu k prostředkům jsou zvláště vhodné pro DynamicResource rozdíl od rozšíření značek StaticResource. Informace o relativních výhodách a dopadech na výkon a StaticResourcevýkon najdete DynamicResource v tématu Zdroje XAML.

Zadaná ResourceKey hodnota by měla odpovídat existujícímu prostředku určenému direktivoux:Key na určité úrovni na stránce, aplikaci, dostupných řídicích motivech a externích prostředcích nebo systémových prostředcích a vyhledávání prostředků bude probíhat v tomto pořadí. Další informace o vyhledávání prostředků pro statické a dynamické prostředky naleznete v tématu Prostředky XAML.

Klíč prostředku může být libovolný řetězec definovaný v jazyce XamlName Grammar. Klíč prostředku může být také jiné typy objektů, například Type. Klíčem Type je základní způsob, jakým můžou být ovládací prvky stylovány motivy. Další informace najdete v tématu Přehled vytváření ovládacích prvků.

Rozhraní API pro vyhledávání hodnot prostředků, například FindResource, se řídí stejnou logikou vyhledávání prostředků, jakou používá DynamicResource.

Alternativní deklarativní způsob odkazování na prostředek je jako rozšíření značek StaticResource.

Nejčastějším typem syntaxe, která se používá u tohoto rozšíření značek, je syntaxe atributu. Řetězcový token poskytnutý po řetězci identifikátoru DynamicResource je přiřazen jako ResourceKey hodnota podkladové DynamicResourceExtension třídy rozšíření.

DynamicResource lze použít v syntaxi elementu objektu. V tomto případě je nutné zadat hodnotu ResourceKey vlastnosti.

DynamicResource lze také použít ve podrobném použití atributu ResourceKey , který určuje vlastnost jako parametr property=value pair:

<object property="{DynamicResource ResourceKey=key}" ... />  

Použití podrobné syntaxe je často užitečné pro rozšíření, která mají více než jednu nastavitelnou vlastnost, nebo v případě, že jsou některé vlastnosti volitelné. Vzhledem k tomu DynamicResource , že má pouze jednu nastavenou vlastnost, která je povinná, toto podrobné použití není typické.

V implementaci procesoru WPF XAML je zpracování tohoto rozšíření značek definováno DynamicResourceExtension třídou.

DynamicResource je rozšíření značek. Rozšíření značek jsou obvykle implementována v případě požadavku, aby díky použití řídicí sekvence mohly být hodnoty atributů něčím jiným než literálními hodnotami nebo názvy obslužných rutin, a tento požadavek má tak rozsáhlou platnost, že nestačí jednoduše použít převaděče typů pro určité typy nebo vlastnosti. Všechna rozšíření značek v XAML používají {a } znaků v syntaxi atributu, což je konvence, kterou procesor XAML rozpozná, že rozšíření značek musí zpracovat atribut. Další informace naleznete v tématu Rozšíření značek a WPF XAML.

Viz také