x:Key 指示詞

唯一識別在 XAML 定義字典中建立和參考的專案。 x:Key將值加入 XAML 物件專案是識別資源字典中資源最常見的方式,例如在 WPF ResourceDictionary 中。

XAML Attribute Usage

<object x:Key="stringKeyValue".../>  
-or-  
<object x:Key="{markupExtensionUsage}".../>  

XAML 屬性使用方式 (WPF 特定)

<object.Resources>  
  <object x:Key="stringKeyValue".../>  
</object.Resources>  
-or-  
<object.Resources>  
  <object x:Key="{markupExtensionUsage}".../>  
</object.Resources>  

XAML 值

Description
stringKeyValue 要當做索引鍵使用的文字字串。 文字字串必須符合 XamlName 文法
markupExtensionUsage 在標記延伸分隔符號 {} 內,標記延伸使用方式會提供物件做為索引鍵。 請參閱<備註>。

備註

x:Key 支援 XAML 資源字典概念。 XAML 作為語言不會定義資源字典實作,而該實作會留給特定的 UI 架構。 若要深入瞭解如何在 WPF 中實作 XAML 資源字典,請參閱 XAML 資源概觀(WPF .NET)。

在 XAML 2006 和 WPF 中, x:Key 必須以屬性的形式提供。 您仍然可以使用非字串索引鍵,但這需要標記延伸使用方式,才能以屬性形式提供非字串值。 如果您使用 XAML 2009, x:Key 可以指定為 專案,以明確支援以字串以外的物件類型為索引鍵的字典,而不需要標記延伸中繼。 請參閱本主題中的一節。 一節的其餘部分特別適用于 XAML 2006 實作。

的屬性值 x:Key 可以是 XamlName 文法 定義的任何字串,也可以是透過標記延伸評估的物件。 如需 WPF 的範例,請參閱

IDictionary 作之父元素的子專案通常必須包含 x:Key 屬性,指定該字典內的唯一索引鍵值。 架構可能會實作別名索引鍵屬性,以取代 x:Key 特定類型;定義這類屬性的類型應該以 DictionaryKeyPropertyAttribute 屬性來屬性。

指定 的程式 x:Key 代碼對等專案是用於基礎 IDictionary 的索引鍵。 例如, x:Key 當您在程式碼中將資源新增至 WPF ResourceDictionary 時,套用在 WPF 資源的標記中套用的 ,相當於 的 參數 ResourceDictionary.Addkey

WPF 使用方式注意事項

屬於 IDictionary WPF ResourceDictionary 等實作之父物件的子物件通常必須包含屬性,而且索引鍵值在該字典中必須是唯一 x:Key 的。 有兩個值得注意的例外狀況:

在整體 WPF XAML 實作和應用程式模型中,XAML 標記編譯器不會檢查索引鍵唯一性。 相反地,遺漏或非唯一 x:Key 的值會導致載入時間的 XAML 剖析器錯誤。 不過,Visual Studio 處理 WPF 的字典通常會在設計階段注意到這類錯誤。

請注意,在顯示的語法中, ResourceDictionary 物件隱含于 WPF XAML 處理器產生集合以填入 Resources 集合的方式。 ResourceDictionary通常不會明確提供 做為標記中的專案,但在某些情況下,如果想要清楚起見,它可以是集合物件專案, Resources 而屬性專案與填入字典中的專案之間。 如需集合物件幾乎一律是標記中隱含元素之原因的資訊,請參閱 XAML 語法詳細資料

在 WPF XAML 實作中,資源字典索引鍵的處理是由 ResourceKey 抽象類別所定義。 不過,WPF XAML 處理器會根據其使用方式,為索引鍵產生不同的基礎擴充類型。 例如,會分別處理 或 任何衍生類別的 DataTemplate 索引鍵,並產生不同的 DataTemplateKey 物件。

索引鍵和名稱在基本 XAML 定義中使用不同的指示詞和語言專案 ( x:Keyx:Name ) 。 WPF 定義和這些概念的應用程式也會在不同的情況下使用索引鍵和名稱。 如需詳細資訊,請參閱 WPF XAML Namescopes

如先前所述,索引鍵的值可以透過標記延伸提供,而且可以是字串值以外的值。 WPF 案例的範例是 x:Key 的值可能是 ComponentResourceKey 。 某些控制項會針對自訂樣式資源公開該類型的樣式索引鍵,該資源會影響該控制項的部分外觀和行為,而不會完全取代樣式。 這類索引鍵的範例為 ButtonStyleKey

WPF 合併字典功能引進了索引鍵唯一性和索引鍵查閱行為的其他考慮。 如需詳細資訊,請參閱 合併的資源字典

XAML 2009

XAML 2009 會放寬一律以屬性形式提供的限制 x:Key

在 WPF 中,您可以使用 XAML 2009 功能,但僅適用于未編譯標記的 XAML。 WPF 之編譯標記的 XAML 和 BAML 形式的 XAML 目前不支援 XAML 2009 關鍵字和功能。

在 XAML 2009 下,您可以透過下列用法來指定 x:Key 元素:

XAML 元素使用方式 (僅限 XAML 2009)

<object>  
  <x:Key>  
keyObject  
  </x:Key>  
...  
</object>  

XAML 值

Description
keyObject 物件的物件專案,用於做為特製化字典中指定 object 之 索引鍵的物件。
  • 這種用途的容器/父代不會在此顯示。 object 必須是代表特殊字典實作之物件專案的子系。 keyObject 必須是物件實例(或實值型別的值),適合做為該特定特製化字典實作的索引鍵。

  • WPF 不會實作需要此用法的字典。 物件索引鍵是 XAML 語言的一般功能,對於在 XAML 中建立字典的特定自訂字典案例可能很有用。 對於使用非字串索引鍵的資源之隱含樣式等 WPF 功能,建立或指定索引鍵的其他技術存在,因此不需要使用物件索引鍵。

  • keyObject 也可以是物件專案表單中的標記延伸用法,而不是直接物件實例。

Silverlight 使用量注意事項

x:Key 針對 Silverlight 會個別記載。 如需詳細資訊,請參閱 XAML 命名空間 (x:) 語言功能 (Silverlight)

另請參閱