StaticResource 标记扩展

通过查找对已定义资源的引用,为任何 XAML 属性提供值。 查找该资源的行为类似于加载时查找,将查找先前从当前 XAML 页面的标记以及其他应用程序源中加载的资源,并将生成该资源值作为运行时对象中的属性值。

XAML 属性用法

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

XAML 对象元素用法

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

XAML 值

说明
key 所请求资源的密钥。 如果资源在标记中创建,则此键最初由 x:Key 指令分配,如果资源在代码中创建,则此键在调用 ResourceDictionary.Add 时作为 key 参数提供。

注解

重要

StaticResource 不应尝试正向引用一个在 XAML 文件中按词法进一步定义的资源。 不支持此尝试,即使此类引用没有失败,当搜索表示 ResourceDictionary 的内部哈希表时,尝试正向引用也会导致加载时间性能损失。 为实现最佳效果,请调整你的资源字典的组成,以避免使用正向引用。 如果无法避免正向引用,请改用 DynamicResource 标记扩展

指定的 ResourceKey 在某种程度上应对应于使用 x:Key 指令在你的页面、应用程序、可用控件主题和外部资源或系统资源中标识的现有资源。 资源查找将按该顺序进行。 有关静态和动态资源查找的详细信息,请参阅 XAML 资源

资源键可以是以 XamlName 语法定义的任何字符串。 资源键也可以是其他对象类型,例如 TypeType 键是如何通过隐式样式键按主题设置控件样式的基础。 有关详细信息,请参阅控件创作概述

引用资源的替代声明性方法与 DynamicResource 标记扩展一样。

特性语法是最常用于该标记扩展的语法。 在 StaticResource 标识符字符串之后提供的字符串标记被指定为基础 ResourceKey 扩展类的 StaticResourceExtension 值。

StaticResource 可以在对象元素语法中使用。 在这种情况下,需要指定 ResourceKey 属性的值。

StaticResource 还可以在详细特性用法中使用,以便将 ResourceKey 属性指定为一个 property=value 对:

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

如果扩展具有一个以上的可设置属性,或者某些属性是可选的,则详细用法通常会很有用。 由于 StaticResource 仅有一个可设置的属性,并且此属性是必需的,因此该详细用法不具有典型性。

在 WPF XAML 处理器实现中,对此标记扩展的处理由 StaticResourceExtension 类定义。

StaticResource 是标记扩展。 当要求转义特性值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性上放置类型转换器而言,此需求更具有全局性。 XAML 中的所有标记扩展在其特性语法中均使用 { 和 } 字符,正是依据这一约定,XAML 处理器认定标记扩展必须处理特性。 有关详细信息,请参阅标记扩展和 WPF XAML

另请参阅