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
可以指定為 專案,以明確支援以字串以外的物件類型為索引鍵的字典,而不需要標記延伸中繼。 請參閱本主題中的
的屬性值 x:Key
可以是 XamlName 文法 中 定義的任何字串,也可以是透過標記延伸評估的物件。 如需 WPF 的範例,請參閱
實 IDictionary 作之父元素的子專案通常必須包含 x:Key
屬性,指定該字典內的唯一索引鍵值。 架構可能會實作別名索引鍵屬性,以取代 x:Key
特定類型;定義這類屬性的類型應該以 DictionaryKeyPropertyAttribute 屬性來屬性。
指定 的程式 x:Key
代碼對等專案是用於基礎 IDictionary 的索引鍵。 例如, x:Key
當您在程式碼中將資源新增至 WPF ResourceDictionary 時,套用在 WPF 資源的標記中套用的 ,相當於 的 參數 ResourceDictionary.Add 值 key
。
WPF 使用方式注意事項
屬於 IDictionary WPF ResourceDictionary 等實作之父物件的子物件通常必須包含屬性,而且索引鍵值在該字典中必須是唯一 x:Key
的。 有兩個值得注意的例外狀況:
某些 WPF 類型會宣告字典使用方式的隱含索引鍵。 例如, Style 具有 TargetType 、 或 DataTemplate 具有 DataType 的 ,可以在 中使用 ResourceDictionary 隱含索引鍵。
WPF 支援合併的資源字典概念。 索引鍵可以在合併字典之間共用,而且可以使用 來存取 FindResource 共用索引鍵行為。 如需詳細資訊,請參閱 合併的資源字典 。
在整體 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:Key
與 x: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) 。