共用方式為


StaticResource 標記擴充功能

透過查詢已定義資源的參考,來為任何 XAML 屬性提供值。 該資源的查詢行為類似於載入時查詢,會先查詢之前從目前 XAML 頁面的標記以及其他應用程式來源所載入的資源,並生成該資源值作為運行中的物件屬性值。

XAML 屬性使用方式

<object property="{StaticResource key}" ... />

XAML 物件專案使用方式

<object>
  <object.property>
<StaticResource ResourceKey="key" ... />
  </object.property>
</object>

XAML 值

價值觀 說明
key 所要求資源的密鑰。 如果資源是在標記中建立,則此索引鍵最初由 x:索引鍵指示詞指派,如果資源在程式碼中建立,則在呼叫 ResourceDictionary.Add 時作為 key 參數提供。

備註

這很重要

StaticResource 不應嘗試對在 XAML 檔案中進一步以語彙定義的資源進行前置引用。 這種作法不受支援,即使這類引用沒有失敗,嘗試前置引用也會在搜尋代表 ResourceDictionary 的內部雜湊表時造成載入時間的效能損失。 為了達到最佳結果,請調整資源字典的組成以避免前置引用。 若無法避免前置引用,請改用 DynamicResource 標記延伸

指定的 ResourceKey 應該對應至現有的資源,在頁面、應用程式、可用控制項主題和外部資源或系統資源中的某些層級上以 x:Key 指示詞進行識別。 資源查詢會依該順序進行。 想了解更多靜態和動態資源查詢行為的相關資訊,請參閱 XAML 資源

資源索引鍵可以是 XamlName 文法中所定義的任何字串。 資源索引鍵也可能是其他物件類型,例如 TypeType 索引鍵對於透過隱含樣式索引鍵依主題設定控制項樣式至關重要。 如需詳細資訊,請參閱控制項撰寫概觀

引用資源的另一種宣告方式是 DynamicResource 標記延伸

屬性 (Attribute) 語法是最常搭配這個標記延伸來使用的語法。 TemplateBinding 識別項字串後所提供的字串語彙基元,是指派做為基礎 Property 延伸類別的 TemplateBindingExtension 值。

DynamicResource 可能也會用於物件元素語法中。 在此情況下,需要指定 ResourceKey 屬性值。

TemplateBinding 也可以用於會指定 Property 屬性 (Property) 做為 property=value 配對組的詳細屬性 (Attribute) 使用方式中。

<object property="{StaticResource ResourceKey=key}" ... />

詳細使用方式通常是適用於具有一個以上可設定屬性或有些屬性為選擇性屬性的標記延伸。 因為 TemplateBinding 只有一個必要的可設定屬性,所以這種詳細使用方式並不常見。

在 WPF XAML 處理器實作中,此標記延伸的處理由 TemplateBindingExtension 類別定義。

StaticResource 是標記延伸。 當需要轉義屬性值,使其不同於字面值或處理程式名稱時,通常會實作標記擴展。此需求比僅僅在特定類型或屬性上使用型別轉換器更加全域化。 所有 XAML 標記延伸都會在其屬性語法中使用 { 與 } 字元,這個慣例讓 XAML 處理器知道某個標記延伸必須處理這個屬性。 如需詳細資訊,請參閱標記延伸和 WPF XAML

另請參閱