{CustomResource} 标记扩展

通过评估对来自自定义资源查找实现的资源的引用,为任何 XAML 属性提供值。 资源查找由 CustomXamlResourceLoader 类实现执行。

XAML 属性使用方法

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

XAML 值

术语 说明
所请求资源的密钥。 最初分配密钥的方式特定于当前注册供使用的 CustomXamlResourceLoader 类的实现。

注解

CustomResource 是获取自定义资源存储库中其他地方定义的值的一种技术。 此方法相对高级,大多数Windows 运行时应用方案不使用此方法。

本主题中未介绍 CustomResource 解析为资源字典的方式,因为这可能因 CustomXamlResourceLoader 的实现方式而异。

每当在标记中遇到{CustomResource}用法时,Windows 运行时 XAML 分析器调用 CustomXamlResourceLoader 实现的 GetResource 方法。 传递给 GetResourceresourceId 来自参数,而其他输入参数来自上下文,例如应用于哪个属性。

{CustomResource}默认情况下,用法不起作用(GetResource 的基本实现不完整)。 若要进行有效的 {CustomResource} 引用,必须执行以下每个步骤:

  1. CustomXamlResourceLoader 派生自定义类并重写 GetResource 方法。 不要在实现中调用基。
  2. 将 CustomXamlResourceLoader.Current 设置为在初始化逻辑中引用类。 在加载包含 {CustomResource} 扩展用法的任何页面级 XAML 之前,必须发生这种情况。 设置 CustomXamlResourceLoader.Current 的一个位置是在 App.xaml 代码隐藏模板中为你生成的 Application 子类构造函数中。
  3. 现在,你可以使用 {CustomResource} 应用加载为页面的 XAML 中的扩展,也可以在 XAML 资源字典中使用扩展。

CustomResource 是标记扩展。 当要求转义特性值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性上放置类型转换器而言,此需求更具有全局性。 XAML 中的所有标记扩展在其属性语法中都使用“{”和“}”字符,通过此约定,XAML 处理器可以知道标记扩展必须处理属性。