共用方式為


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 值

targetTypeName

定義於資源組件中的公用 common language runtime (CLR) 型別的名稱。

targetID

資源的索引鍵。 查閱資源時,targetID 類似於資源的 x:Key 指示詞

備註

如上述使用方式所示,在兩個位置可找到 {ComponentResourceKey} 標記延伸使用方式:

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

  • 當您在重製控制項的樣板,但想要使用控制項的佈景主題所提供之資源的屬性值時,從組件存取佈景主題資源。

對於參考來自佈景主題的元件資源,一般都建議您使用 {DynamicResource},而非 {StaticResource}。 這點會在使用方式中顯示。 建議使用 {DynamicResource},因為使用者可以變更佈景主題本身。 如果您要用最接近控制項作者意圖的元件資源來支援佈景主題,也應該將元件資源參考啟用為動態。

TypeInTargetAssembly 會識別存在於實際定義資源的目標組件中的型別。 ComponentResourceKey 的定義和使用,可以不需要知道實際定義 TypeInTargetAssembly 的地方,但最後必須透過參考組件解析型別。

ComponentResourceKey 的常見用法是定義接著要公開為類別成員的索引鍵。 關於這個使用方式,您使用的是 ComponentResourceKey 類別建構函式,而非標記延伸。 如需詳細資訊,請參閱 ComponentResourceKey,或是控制項撰寫概觀主題的<定義和參考佈景主題資源的索引鍵>章節。

在建立索引鍵和參考索引鍵資源時,通常都會對 ComponentResourceKey 標記延伸使用屬性語法。

顯示的簡潔語法會依靠 ComponentResourceKey.ComponentResourceKey 建構函式簽章和標記延伸的位置參數使用方式。 指定 targetTypeName 和 targetID 的順序非常重要。 詳細語法仰賴 ComponentResourceKey.ComponentResourceKey 預設建構函式,然後以類似於物件項目上真正的屬性 (Attribute) 語法的方式設定 TypeInTargetAssemblyResourceId。 在詳細語法中,屬性的設定順序並不重要。 如需這兩種替代用法 (精簡和詳細) 的關係和機制,請參閱主題標記延伸和 WPF XAML 中的描述。

技術上,targetID 的值可為任何物件,它並不需要是字串。 不過,在 WPF 中最常見的用法是將 targetID 值與字串的形式對齊,其中這類字串都在 XamlName 文法 中有效。

ComponentResourceKey 可用於物件項目語法。 在這個情況下,必須要同時指定 TypeInTargetAssemblyResourceId 屬性的值,才能適當初始化延伸。

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

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

請參閱

參考

ComponentResourceKey

ControlTemplate

概念

控制項撰寫概觀

XAML 概觀 (WPF)

標記延伸和 WPF XAML