ThemeDictionary – rozšíření značek
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í problémy s nasazením. Další informace naleznete v tématu Identifikátory URI balíčků 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 konvence pojmenování, která identifikuje slovník, který se vztahuje na konkrétní motiv. Logika ProvideValue pro ThemeDictionary
dokončení konvence vygenerováním identifikátoru URI (Uniform Resource Identifier), který odkazuje na konkrétní variantu slovníku motivu, jak je obsaženo v předkompilované sestavení prostředků. Popis této konvence nebo interakce motivů s obecnými styly ovládacích prvků a styly na úrovni stránky/aplikace jako konceptem se zde plně nezabývá. Základním scénářem použití ThemeDictionary
je určení Source vlastnosti ResourceDictionary
deklarované na úrovni aplikace. Pokud zadáte identifikátor URI sestavení prostřednictvím ThemeDictionary
rozšíření, nikoli jako přímý identifikátor URI, logika rozšíření poskytne logiku zneplatnění, která se použije při každé změně systémového motivu.
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 ThemeDictionary
je přiřazen jako AssemblyName hodnota podkladové ThemeDictionaryExtension třídy rozšíření.
ThemeDictionary
lze také použít v syntaxi elementu objektu. V tomto případě je nutné zadat hodnotu AssemblyName vlastnosti.
ThemeDictionary
lze také použít ve podrobném použití atributu Member , který určuje vlastnost jako parametr property=value pair:
<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />
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 ThemeDictionary
, ž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 ThemeDictionaryExtension třídou.
ThemeDictionary
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é
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro