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. Řetězcový token poskytnutý za řetězcem identifikátoru ThemeDictionary je přiřazen hodnotě AssemblyName základní třídy rozšíření 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 v podrobném použití atributu, který určuje vlastnost Member jako pár vlastnost=hodnota:

<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í tohoto značkovacího rozšíření definováno třídou ThemeDictionaryExtension.

ThemeDictionary 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é