DynamicResource 標記延伸
藉由將該值延遲為已定義資源的參考,可為任何 XAML 屬性提供值。 該資源的查詢行為類似於執行階段查詢。
XAML Attribute Usage
<object property="{DynamicResource key}" ... />
XAML 屬性項目用法
<object>
<object.property>
<DynamicResource ResourceKey="key" ... />
</object.property>
</object>
XAML 值
值 | Description |
---|---|
key |
要求資源的金鑰。 如果資源是在標記中建立,則此索引鍵最初由 x:索引鍵指示詞指派,如果資源在程式碼中建立,則在呼叫 ResourceDictionary.Add 時作為 key 參數提供。 |
備註
DynamicResource
會在初始編譯期間建立暫存運算式,因此延遲查閱資源,直到實際需要要求的資源值才能建構物件。 這可能是在載入 XAML 頁面之後發生。 系統會根據從目前頁面範圍開始之所有使用中資源字典的索引鍵搜尋來找到資源值,並取代編譯中的預留位置運算式。
重要
就相依性屬性優先順序而言, DynamicResource
運算式相當於套用動態資源參考的位置。 如果您為先前有 DynamicResource
運算式的屬性設定本機值作為本機值,則會完全移除 DynamicResource
。 如需詳細資訊,請參閱相依性屬性值優先順序。
某些資源存取案例特別適用於 DynamicResource
,而不是 StaticResource 標記延伸。 如需 DynamicResource
和StaticResource
的相對優點和效能影響的討論,請參閱 XAML 資源 。
指定的 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。