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