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

另请参阅