DynamicResource 標記延伸
更新:2007 年 11 月
提供任何 XAML 屬性 (Property) 屬性 (Attribute) 的值,方法是將該值延後,使其變成定義之資源的參考。該資源的查閱行為與執行階段查閱類似。
XAML 屬性使用方式
<object property="{DynamicResource key}" .../>
XAML 屬性項目用法
<object>
<object.property>
<DynamicResource ResourceKey="key" .../>
</object.property>
</object>
XAML 值
key |
要求之資源的索引鍵。這個索引鍵一開始是由 x:Key 屬性指派 (如果在標記中建立資源),或是在呼叫 ResourceDictionary.Add 時提供以做為 key 參數 (如果在程式碼中建立資源)。 |
備註
DynamicResource 會在初始編譯期間建立暫存運算式,因此在實際需要所要求的資源值以建構物件之前,並不會進行資源的查閱。這個時機可能是在載入 XAML 之後。尋找資源值的方式是從目前的頁面範圍開始,對所有使用中的資源字典進行索引鍵搜尋,並以找到的資源值取代來自編譯的運算式替代符號。
重要事項: |
---|
就相依性屬性優先順序而言,DynamicResource 運算式相當於套用動態資源參考的位置。如果您將本機值設定給原本使用 DynamicResource 運算式做為本機值的屬性,則會將這個 DynamicResource 完全移除。如需詳細資訊,請參閱相依性屬性值優先順序。 |
相對於 StaticResource 標記延伸,某些資源存取案例特別適用於 DynamicResource。如需 DynamicResource 和 StaticResource 相對優勢與效能含意的相關討論,請參閱資源概觀。
指定的 ResourceKey 應該對應於 x:Key 屬性在頁面、應用程式、可用控制項佈景主題和外部資源的某個層級上定義的現有資源,或是對應該系統資源,而且資源查閱將按照該順序來執行。如需靜態和動態資源之資詢查閱的詳細資訊,請參閱資源概觀。
資源索引鍵可以是 XamlName 文法中定義的任何字串。資源索引鍵也可以是其他物件型別,例如 Type。Type 索引鍵是依佈景主題設定控制項樣式的基礎。如需詳細資訊,請參閱控制項撰寫概觀。
用來查閱資源值的 API (例如 FindResource),其遵偱的資源查閱邏輯與 DynamicResource 使用的邏輯相同。
另一種參考資源的宣告方式是 StaticResource 標記延伸。
屬性 (Attribute) 語法是最常配合這個標記延伸使用的語法。DynamicResource 識別項字串之後所提供的字串語彙基元將會指派為基礎 DynamicResourceExtension 延伸類別的 ResourceKey 值。
DynamicResource 可用於物件項目語法。在這種情況下,您必須指定 ResourceKey 屬性的值。
DynamicResource 也可用於將 ResourceKey 屬性 (Property) 指定為 property=value 配對的詳細屬性 (Attribute) 使用方式。
<object property="{DynamicResource ResourceKey=key}" .../>
繁複的使用方法所適用的擴充,通常是具有一個以上可設定屬性或有些屬性為選擇性。因為 DynamicResource 只有一個必要的可設定屬性,所以這種詳細使用方式並不常見。
在 WPFXAML 處理器實作中,這個標記延伸的處理是由 DynamicResourceExtension 類別所定義。
DynamicResource 是一種標記延伸。如果必須將屬性 (Attribute) 值加上逸出符號,以免成為常值或處理常式名稱,而且這個動作必須更全面地實施 (而不是只對特定型別或屬性 (Property) 設定型別轉換子 (Type Converter)),則通常會實作標記延伸。XAML 所有的標記延伸都會在屬性 (Attribute) 語法中使用 { 和 } 字元,透過這個慣例,XAML 處理器會辨認出標記延伸必須處理該屬性 (Attribute)。如需詳細資訊,請參閱標記延伸和 XAML。