ComponentResourceKey 標記延伸

定義和參考從外部元件載入之資源的索引鍵。 這可讓資源查閱在元件中指定目標型別,而不是元件或類別中的明確資源字典。

XAML 屬性使用方式 (設定索引鍵,精簡)

<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" ... />  

XAML 屬性使用方式 (設定索引鍵,詳細資訊)

<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" ... />  

XAML 屬性使用方式 (要求資源,精簡)

<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" ... />  

XAML 屬性使用方式 (要求資源,詳細資訊)

<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" ... />  

XAML 值

Description
targetTypeName 資源元件中定義的公用 Common Language Runtime (CLR) 類型名稱。
targetID 資源的索引鍵。 查詢資源時, targetID 會類似于 資源的 x:Key 指示詞

備註

如上述用法所示,{ ComponentResourceKey } 標記延伸使用方式位於兩個位置:

  • 主題資源字典內索引鍵的定義,如控制項作者所提供。

  • 從元件存取主題資源時,當您重新範本化控制項,但想要使用來自控制項主題所提供資源的屬性值。

若要參考來自主題的元件資源,通常建議您使用 {DynamicResource} 而不是 {StaticResource} 。 這會顯示在使用量中。 {DynamicResource} 建議使用 ,因為使用者可以變更主題本身。 如果您想要最符合控制項作者支援主題之意圖的元件資源,則也應該讓元件資源參考成為動態。

TypeInTargetAssembly 識別存在於實際定義資源之目標群組件中的型別。 ComponentResourceKey可以單獨定義及使用 ,而不需確切地知道 定義 的位置 TypeInTargetAssembly ,但最終必須透過參考的元件解析型別。

的常見用法 ComponentResourceKey 是定義索引鍵,然後公開為類別的成員。 針對此用法,您會使用類別建 ComponentResourceKey 構函式,而不是標記延伸。 如需詳細資訊,請參閱 ComponentResourceKey 控制項撰寫概觀 主題 的一節。

針對建立索引鍵和參考索引鍵資源,屬性語法通常用於 ComponentResourceKey 標記延伸。

顯示的精簡語法依賴 ComponentResourceKey 標記延伸的建構函式簽章和位置參數使用方式。 和 targetID 的指定順序 targetTypeName 很重要。 詳細資訊語法依賴無參數建 ComponentResourceKey 構函式,然後以類似物件元素上 true 屬性語法的方式設定 TypeInTargetAssemblyResourceId 。 在詳細資訊語法中,設定屬性的順序並不重要。 這兩個替代方案的關聯性和機制在標記延伸和 WPF XAML 主題 中會更詳細地說明。

就技術上而言,的值 targetID 可以是任何物件,它不一定是字串。 不過,WPF 中最常見的用法是將值與字串的表單對齊 targetID ,以及這類字串在 XamlName 文法 有效的位置。

ComponentResourceKey 可用於物件專案語法。 在此情況下,需要指定 和 ResourceId 屬性的值 TypeInTargetAssembly ,才能正確初始化延伸模組。

在 WPF XAML 讀取器實作中,這個標記延伸的處理是由 ComponentResourceKey 類別所定義。

ComponentResourceKey 是一種標記延伸。 如果必須將屬性 (Attribute) 值加上逸出符號,以免成為常值或處理常式名稱,而且這個動作必須更全面地實施 (而不是只對特定類型或屬性 (Property) 設定類型轉換子 (Type Converter)),則通常會實作標記延伸。 XAML 中的所有標記延伸都會在其屬性語法中使用 { 和 } 字元,這是 XAML 處理器辨識標記延伸必須處理屬性的慣例。 如需詳細資訊,請參閱標記延伸和 WPF XAML

另請參閱