共用方式為


主題字典標記擴展

為自訂控制項的作者或應用程式提供一種方式,整合協力廠商的控制項來載入佈景主題特定的資源字典,以便在設定控制項樣式時使用。

XAML 屬性使用方式

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

XAML 物件專案使用方式

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

XAML 值

價值觀 說明
assemblyUri 包含主題資訊的組件之統一資源識別項 (URI)。 一般而言,這個 Pack URI 會參考較大封裝中的組件。 組件資源和 Pack URI 可簡化部署問題。 如需詳細資訊,請參閱 WPF 中的 Pack URI

備註

此延伸模組只用來填入一個特定的屬性值:ResourceDictionary.Source 的值。

藉由使用此延伸模組,您可以指定僅含資源的單一組件,其中包含只有在將 Windows Aero 主題套用至使用者系統時才會使用的一些樣式、僅有當 Luna 主題為作用中時使用的其他樣式等資訊。 藉由使用此延伸模組,控制項特定的資源字典內容可在必要時自動失效並重新載入以專用於另一個佈景主題。

assemblyUri 字串 (AssemblyName 屬性值) 構成命名慣例的基礎,可識別哪一個字典適用於特定主題。 ThemeDictionaryProvideValue 邏輯會藉由產生指向特定主題字典變體的統一資源識別項 (URI) (如先行編譯的資源組件所包含),來完成慣例。 此處將不會完整說明此慣例,或是概念上與一般控制項樣式設定和頁面/應用程式層級樣式設定進行的佈景主題互動。 使用 ThemeDictionary 的基本案例是指定 ResourceDictionary 在應用層級宣告的 Source 屬性。 當您透過 ThemeDictionary 延伸模組提供組件的 URI,而不是做為直接 URI 時,延伸模組邏輯將提供每當系統主題變更時適用的失效邏輯。

屬性 (Attribute) 語法是最常搭配這個標記延伸來使用的語法。 TemplateBinding 識別項字串後所提供的字串語彙基元,是指派做為基礎 Property 延伸類別的 TemplateBindingExtension 值。

ThemeDictionary 可能也會用於物件元素語法中。 在此情況下,需要指定 ResourceKey 屬性值。

TemplateBinding 也可以用於會指定 Property 屬性 (Property) 做為 property=value 配對組的詳細屬性 (Attribute) 使用方式中。

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

詳細使用方式通常是適用於具有一個以上可設定屬性或有些屬性為選擇性屬性的標記延伸。 因為 TemplateBinding 只有一個必要的可設定屬性,所以這種詳細使用方式並不常見。

在 WPF XAML 處理器實作中,此標記延伸的處理由 TemplateBindingExtension 類別定義。

ThemeDictionary 是標記延伸。 當需要轉義屬性值,使其不同於字面值或處理程式名稱時,通常會實作標記擴展。此需求比僅僅在特定類型或屬性上使用型別轉換器更加全域化。 所有 XAML 標記延伸都會在其屬性語法中使用 { 與 } 字元,這個慣例讓 XAML 處理器知道某個標記延伸必須處理這個屬性。 如需詳細資訊,請參閱標記延伸和 WPF XAML

另請參閱