{CustomResource} 标记扩展

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

XAML 属性使用方法

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

XAML 值

术语 描述
key 所请求资源的密钥。 键的初始分配方式特定于当前注册使用的 CustomXamlResourceLoader 类的实现。

注解

CustomResource 这种技术可获取在自定义资源存储库中的其他地方定义的值。 此技术相对比较高级,大多数 Windows 运行时应用方案都没有使用此技术。

本主题中不介绍 CustomResource 解析资源词典的方法,因为解析方法会随 CustomXamlResourceLoader 实现方法的不同而有很大的不同。

只要在标记中遇到使用 {CustomResource} 的情况,就由 Windows 运行时 XAML 分析程序调用 CustomXamlResourceLoader 实现的 GetResource 方法。 传递给 GetResourceresourceId 来自 key 参数,其他输入参数来自上下文(例如使用情况所应用的属性)。

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

  1. CustomXamlResourceLoader 派生自定义类,并替代 GetResource 方法。 不要在实现中调用基类。
  2. 设置 CustomXamlResourceLoader.Current 以在初始化逻辑中引用你的类。 必须在加载包括 {CustomResource} 扩展在内的任何页面级 XAML 之前执行此操作。 设置 CustomXamlResourceLoader.Current 的一个位置是,App.xaml 代码隐藏模板中为你生成的 Application 子类构造函数。
  3. 现在你可以在你的应用加载为页面的 XAML 中,或从 XAML 资源词典内使用 {CustomResource} 扩展。

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