ComponentResourceKey 標記延伸
更新:2007 年 11 月
定義和參考自外部組件載入的資源索引鍵。這樣可以讓資源查閱在組件中指定目標型別 (Target Type),而非在組件中指定明確資源字典。
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 屬性。 |
備註
TypeInTargetAssembly 會識別存在於實際定義資源的目標組件中的型別。ComponentResourceKey 的定義和使用,可以不需要知道實際定義 TypeInTargetAssembly 的地方,但最後必須透過參考組件解析型別。
ComponentResourceKey 的常見用法是定義接著要公開為類別成員的索引鍵。關於這個使用方式,您使用的是 ComponentResourceKey 類別建構函式,而非標記延伸。
屬性 (Attribute) 語法常用於 ComponentResourceKey 標記延伸。顯示的精簡語法仰賴 ComponentResourceKey.ComponentResourceKey 建構函式簽章,而且 targetTypeName 和 targetID 的指定順序是很重要的。詳細語法仰賴 ComponentResourceKey.ComponentResourceKey 預設建構函式,然後以類似於物件項目上真正的屬性 (Attribute) 語法的方式設定 TypeInTargetAssembly 和 ResourceId。詳細語法中的屬性 (Property) 設定順序就不太重要。如需這兩種替代用法 (精簡和詳細) 的關係和機制,請參閱主題標記延伸和 XAML 中的描述。
ComponentResourceKey 可以用於物件項目語法中。在這個情況下,必須要同時指定 TypeInTargetAssembly 和 ResourceId 屬性的值,才能適當初始化延伸。
在 WPF XAML 讀取器實作中,這個標記延伸的處理是由 ComponentResourceKey 類別定義的。
ComponentResourceKey 是一種標記延伸。如果必須將屬性 (Attribute) 值加上逸出符號,以免成為常值或處理常式名稱,而且這個動作必須更全面地實施 (而不是只對特定型別或屬性 (Property) 設定型別轉換子 (Type Converter)),則通常會實作標記延伸。所有 XAML 標記延伸都會在其屬性 (Attribute) 語法中使用 { 與 } 字元,這個慣例讓 XAML 處理器知道某個標記延伸必須處理這個屬性 (Attribute)。如需詳細資訊,請參閱標記延伸和 XAML。