Sdílet prostřednictvím


Rozšíření značek DynamicResource

Poskytuje hodnotu pro jakýkoli atribut vlastnosti XAML tím, že tuto hodnotu odloží jako odkaz 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

DynamicResource během počáteční kompilace vytvoří dočasný výraz, a proto odloží vyhledávání prostředků, dokud se k vytvoření objektu ve skutečnosti nevyžaduje požadovaná hodnota prostředku. 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ý

Z hlediska priority vlastnosti závislosti je výraz DynamicResource ekvivalentní pozici, kde se používá dynamický odkaz na prostředky. Pokud nastavíte místní hodnotu pro vlastnost, která dříve měla výraz DynamicResource jako místní hodnotu, DynamicResource se úplně odebere. Podrobnosti naleznete 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 na rozdíl od statického rozšíření značek StaticResource. Informace o relativních výhodách a dopadech DynamicResource a StaticResourcenajdete v tématu Zdroje XAML .

Zadaná ResourceKey by měla odpovídat existujícímu prostředku určenému direktivou x:Key na určité úrovni na stránce, aplikaci, dostupných motivech ovládacích prvků 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 jakýkoli řetězec definovaný v XamlName Grammar. Klíč prostředku může být také jiný typ objektu, například Type. Klíč Type je klíčový pro způsob, jakým mohou být ovládací prvky stylovány pomocí motivů. Další informace najdete v tématu Přehled vytváření ovládacích prvků.

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

Alternativní deklarativní prostředky odkazování na prostředek jsou jako StaticResource Markup Extension.

Syntaxe atributu je nejběžnější syntaxe použitá s tímto rozšířením značek. Řetězcový token poskytnutý za řetězcem identifikátoru DynamicResource je přiřazen hodnotě ResourceKey základní třídy rozšíření DynamicResourceExtension.

DynamicResource lze použít v syntaxi elementu objektu. V tomto případě je vyžadována hodnota vlastnosti ResourceKey.

DynamicResource lze také použít v podrobném použití atributu, který určuje vlastnost ResourceKey jako pár vlastnost=hodnota:

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

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

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

DynamicResource je rozšíření tagů. Rozšíření značek se obvykle implementují, pokud existuje požadavek uniknout hodnotám atributů, aby byly jiné než literální hodnoty nebo názvy obslužných rutin, a požadavek je globálnější než pouhé použití převodníků typů na určité typy nebo vlastnosti. Všechna rozšíření značek v XAML používají znaky { a } ve své syntaxi atributů, což je konvence, díky níž 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é