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 屬性值) 構成命名慣例的基礎,可識別哪一個字典適用于特定主題。 的 ProvideValue 邏輯 ThemeDictionary 會藉由產生指向特定主題字典變體的統一資源識別項 (URI),如先行編譯的資源元件所包含,來完成慣例。 此處將不會完整說明此慣例,或是概念上與一般控制項樣式設定和頁面/應用程式層級樣式設定進行的佈景主題互動。 使用 ThemeDictionary 的基本案例是指定 Source 在應用層級宣告的 ResourceDictionary 屬性。 當您透過 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

另請參閱