DynamicResource 標記延伸

藉由將該值延遲為已定義資源的參考,為任何 XAML 屬性提供值。 該資源的查閱行為類似于執行時間查閱。

XAML Attribute Usage

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

XAML 屬性項目用法

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

XAML 值

Description
key 要求資源的金鑰。 如果資源是在標記中建立,或是在程式碼中建立資源時,或是在呼叫 ResourceDictionary.Add 資源是在程式碼中建立時提供做為 key 參數,則此索引鍵最初是由 x:Key 指示 詞指派。

備註

DynamicResource會在初始編譯期間建立暫存運算式,因此延遲查閱資源,直到實際需要要求的資源值才能建構物件。 這可能是在載入 XAML 頁面之後。 系統會根據從目前頁面範圍開始之所有使用中資源字典的索引鍵搜尋來找到資源值,並取代編譯中的預留位置運算式。

重要

就相依性屬性優先順序而言, DynamicResource 運算式相當於套用動態資源參考的位置。 如果您為先前有 DynamicResource 運算式做為區域值的屬性設定本機值, DynamicResource 則會完全移除 。 如需詳細資訊,請參閱相依性屬性值優先順序

某些資源存取案例特別適用于 DynamicResource StaticResource 標記延伸 。 如需 和 的相對優點和效能影響的討論,請參閱 XAML 資源 DynamicResourceStaticResource

指定的 ResourceKey 應該對應至頁面、應用程式、可用控制項主題和外部資源,或系統資源,以及資源查閱會依該順序而決定 的現有資源 x:Key 指示 詞。 如需靜態和動態資源之資源查閱的詳細資訊,請參閱 XAML 資源

資源索引鍵可以是 XamlName 文法 定義的任何字串。 資源索引鍵也可能是其他物件類型,例如 Type 。 關鍵 Type 是控制項如何依主題設定樣式的基礎。 如需詳細資訊,請參閱控制項撰寫概觀

資源值的查閱 API,例如 FindResource ,遵循 與 所使用的 DynamicResource 相同資源查閱邏輯。

參考資源的替代宣告式方法為 StaticResource 標記延伸

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

DynamicResource 可用於物件專案語法。 在此情況下,需要指定 屬性的值 ResourceKey

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

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

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

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

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

另請參閱