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íč k požadovanému zdroji. 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 a DynamicResourcenajdete v tématu StaticResource .

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 nastavitelnou vlastnost, která je povinná, není toto rozsáhlé 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í pro značkování. Rozšíření značek se obvykle implementují, pokud existuje požadavek, aby hodnoty atributů byly jiné než doslovné hodnoty nebo názvy obslužných rutin, a požadavek je globálnější než jen používání převaděčů typů na určité typy nebo vlastnosti. Všechny značkové rozšíření v XAML používají znaky { a } ve své syntaxi atributu, což je konvence, podle které procesor XAML rozpozná, že značkové rozšíření musí zpracovat atribut. Další informace naleznete v tématu Rozšíření značek a WPF XAML.

Viz také