ThemeDictionary 標記延伸
為自訂控制項的作者或應用程式提供一種方式,整合協力廠商的控制項來載入佈景主題特定的資源字典,以便在設定控制項樣式時使用。
XAML Attribute Usage
<object property="{ThemeDictionary assemblyUri}" ... />
XAML 物件項目用法
<object>
<object.property>
<ThemeDictionary AssemblyName="assemblyUri"/>
<object.property>
<object>
XAML 值
值 | Description |
---|---|
assemblyUri |
包含主題資訊的組件之統一資源識別項 (URI)。 一般而言,這個 Pack URI 會參考較大封裝中的組件。 組件資源和 Pack URI 可簡化部署問題。 如需詳細資訊,請參閱 WPF 中的 Pack URI。 |
備註
此延伸模組只用來填入一個特定的屬性值:ResourceDictionary.Source 的值。
藉由使用此延伸模組,您可以指定僅含資源的單一組件,其中包含只有在將 Windows Aero 主題套用至使用者系統時才會使用的一些樣式、僅有當 Luna 主題為作用中時使用的其他樣式等資訊。 藉由使用此延伸模組,控制項特定的資源字典內容可在必要時自動失效並重新載入以專用於另一個佈景主題。
assemblyUri
字串 (AssemblyName 屬性值) 構成命名慣例的基礎,可識別哪一個字典適用於特定主題。 ThemeDictionary
的 ProvideValue 邏輯會藉由產生指向特定主題字典變體的統一資源識別項 (URI) (如先行編譯的資源組件所包含),來完成慣例。 此處將不會完整說明此慣例,或是概念上與一般控制項樣式設定和頁面/應用程式層級樣式設定進行的佈景主題互動。 使用 ThemeDictionary
的基本案例是指定 ResourceDictionary
在應用層級宣告的 Source 屬性。 當您透過 ThemeDictionary
延伸模組提供組件的 URI,而不是做為直接 URI 時,延伸模組邏輯將提供每當系統主題變更時適用的失效邏輯。
屬性 (Attribute) 語法是最常搭配這個標記延伸來使用的語法。 ThemeDictionary
識別項字串後所提供的字串語彙基元,是指派做為基礎 AssemblyName 延伸類別的 ThemeDictionaryExtension 值。
ThemeDictionary
可能也會用於物件元素語法中。 在此情況下,需要指定 AssemblyName 屬性值。
ThemeDictionary
也可以用於會指定 Member 屬性 (Property) 做為 property=value 配對組的詳細屬性 (Attribute) 使用方式中。
<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />
詳細使用方式通常是適用於具有一個以上可設定屬性或有些屬性為選擇性屬性的標記延伸。 因為 ThemeDictionary
只有一個必要的可設定屬性,所以這種詳細使用方式並不常見。
在 WPF XAML 處理器實作中,這個標記延伸的處理是由 ThemeDictionaryExtension 類別所定義。
ThemeDictionary
是一種標記延伸。 如果必須將屬性 (Attribute) 值加上逸出符號,以免成為常值或處理常式名稱,而且這個動作必須更全面地實施 (而不是只對特定類型或屬性 (Property) 設定類型轉換子 (Type Converter)),則通常會實作標記延伸。 所有 XAML 標記延伸都會在其屬性語法中使用 { 與 } 字元,這個慣例讓 XAML 處理器知道某個標記延伸必須處理這個屬性。 如需詳細資訊,請參閱標記延伸和 WPF XAML。