StaticResource 标记扩展
更新:2007 年 11 月
通过查找对已定义资源的引用,为任何 XAML 属性 (Property) 的属性 (Attribute) 提供值。对该资源的查找行为类似于加载时查找,它会查找以前从当前 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 属性来标识。资源查找按照该顺序执行。有关静态资源和动态资源的资源查找行为的更多信息,请参见资源概述。
资源键可以是通过 XamlName 语法定义的任何字符串。资源键也可以是其他对象类型,如 Type。Type 键是通过隐式样式键按主题设置控件样式的基础。有关更多信息,请参见控件创作概述。
引用资源的其他声明方式是 DynamicResource 标记扩展。
属性语法是最常用于此标记扩展的语法。在 StaticResource 标识符字符串之后提供的字符串标记被分配为基础 StaticResourceExtension 扩展类的 ResourceKey 值。
StaticResource 可以在对象元素语法中使用。在这种情况下,需要指定 ResourceKey 属性的值。
StaticResource 还可以在将 ResourceKey 属性 (Property) 指定为“属性 (Property)=值”对的详细属性 (Attribute) 用法中使用:
<object property="{StaticResource ResourceKey=key}" .../>
如果扩展具有一个以上的可设置属性,或者某些属性是可选的,则详细用法通常会很有用。由于 StaticResource 仅有一个可设置的属性,并且此属性是必需的,因此该详细用法不具有典型性。
在 WPFXAML 处理器实现中,对此标记扩展的处理由 StaticResourceExtension 类定义。
StaticResource 是标记扩展。当要求转义属性 (attribute) 值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性 (property) 上放置类型转换器而言,此要求更具有全局性。XAML 中的所有标记扩展在其属性语法中使用 { 和 } 字符,这是 XAML 处理器确认标记扩展必须处理属性时所遵守的约定。有关更多信息,请参见标记扩展和 XAML。