DynamicResource 標記延伸

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

XAML Attribute Usage

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

XAML 屬性項目用法

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

XAML 值

key 要求資源的金鑰。 如果資源是在標記中建立 ,或在 key 呼叫 ResourceDictionary.Add 資源是在程式碼中建立時,就會以參數的形式提供此索引鍵,這一開始是由 x:Key 指示詞所指派。

備註

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

重要

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

某些資源存取案例特別適用于 DynamicResourceStaticResource 標記延伸相對的。 請參閱 XAML 資源 ,以取得有關和的相對優勢和效能含意的討論 DynamicResource StaticResource

指定的 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

另請參閱