Sdílet prostřednictvím


Rozšíření značek ThemeDictionary

Poskytuje způsob, jak pro autory vlastních ovládacích prvků nebo aplikace, které integrují ovládací prvky třetích stran, načíst slovníky prostředků specifické pro motiv, které se mají použít ve stylu ovládacího prvku.

Použití atributu XAML

<object property="{ThemeDictionary assemblyUri}" ... />  

Použití elementu objektu XAML

<object>  
  <object.property>  
    <ThemeDictionary AssemblyName="assemblyUri"/>  
  <object.property>  
<object>  

Hodnoty XAML

Hodnota Popis
assemblyUri Identifikátor URI (Uniform Resource Identifier) sestavení, který obsahuje informace o motivu. Obvykle se jedná o identifikátor URI balíčku, který odkazuje na sestavení ve větším balíčku. Prostředky sestavení a identifikátory URI balíčků zjednodušují nasazovací proces. Další informace naleznete v tématu Pack URI ve WPF .

Poznámky

Toto rozšíření je určeno k vyplnění pouze jedné konkrétní hodnoty vlastnosti: hodnota pro ResourceDictionary.Source.

Pomocí tohoto rozšíření můžete zadat pouze jedno sestavení prostředků, které obsahuje některé styly, které se mají použít pouze v případě, že se motiv Windows Aero použije v systému uživatele, jiné styly pouze v případě, že je motiv Luna aktivní atd. Pomocí tohoto rozšíření lze obsah slovníku prostředků specifického pro ovládací prvek automaticky zneplatnit a znovu načíst, aby byl v případě potřeby specifický pro jiný motiv.

Řetězec assemblyUri (AssemblyName hodnota vlastnosti) tvoří základ nomenklatury, která určuje, který slovník platí pro konkrétní téma. Logika ProvideValue pro ThemeDictionary dokončuje konvenci tím, že generuje uniformní identifikátor URI (Uniform Resource Identifier), který odkazuje na konkrétní variantu slovníku motivu, jak je uvedeno v předkompilované sestavě prostředků. Popis této konvence nebo interakcí motivů s obecnými styly ovládacích prvků a styly na úrovni stránky/aplikace jako koncept není zde plně pokryt. Základní scénář použití ThemeDictionary spočívá ve specifikaci vlastnosti Source pro ResourceDictionary, které je deklarováno na úrovni aplikace. Když pro sestavení zadáte URI prostřednictvím rozšíření ThemeDictionary místo přímého URI, logika rozšíření poskytne logiku pro zneplatnění, která je použitelná při každé změně systémového motivu.

Syntaxe atributu je nejběžnější syntaxe použitá s tímto rozšířením značek. Token poskytnutý po řetězci identifikátoru ThemeDictionary je přiřazen jako hodnota AssemblyName základní rozšiřující třídy ThemeDictionaryExtension.

ThemeDictionary lze také použít v syntaxi elementu objektu. V tomto případě je vyžadována hodnota vlastnosti AssemblyName.

ThemeDictionary lze také použít ve podrobném použití atributu, který určuje vlastnost Member jako pár property=value:

<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />  

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 ThemeDictionary má pouze jednu nastavitelnou vlastnost, která je povinná, není toto rozsáhlé použití typické.

V implementaci procesoru WPF XAML je zpracování této značkové rozšíření definováno třídou ThemeDictionaryExtension.

ThemeDictionary je značkovací rozšíření. Rozšíření značek se obvykle implementují, pokud existuje požadavek na úpravu hodnot atributů tak, aby nebyly jen literály nebo názvy obslužných rutin, a tento požadavek je spíše globální než jen použití převodníků typů na určité typy nebo vlastnosti. Všechna rozšíření značek v XAML používají znaky { } ve své syntaxi atributu, což je konvence, díky které procesor XAML rozpozná, že musí zpracovat atribut. Další informace naleznete v tématu Rozšíření značek a WPF XAML.

Viz také