{CustomResource} 标记扩展
通过评估对来自自定义资源查找实现的资源的引用,为任何 XAML 属性提供值。 资源查找由 CustomXamlResourceLoader 类实现执行。
XAML 属性使用方法
<object property="{CustomResource key}" .../>
XAML 值
术语 | 说明 |
---|---|
键 | 所请求资源的密钥。 最初分配密钥的方式特定于当前注册供使用的 CustomXamlResourceLoader 类的实现。 |
注解
CustomResource 是获取自定义资源存储库中其他地方定义的值的一种技术。 此方法相对高级,大多数Windows 运行时应用方案不使用此方法。
本主题中未介绍 CustomResource 解析为资源字典的方式,因为这可能因 CustomXamlResourceLoader 的实现方式而异。
每当在标记中遇到{CustomResource}
用法时,Windows 运行时 XAML 分析器调用 CustomXamlResourceLoader 实现的 GetResource 方法。 传递给 GetResource 的 resourceId 来自键参数,而其他输入参数来自上下文,例如应用于哪个属性。
{CustomResource}
默认情况下,用法不起作用(GetResource 的基本实现不完整)。 若要进行有效的 {CustomResource}
引用,必须执行以下每个步骤:
- 从 CustomXamlResourceLoader 派生自定义类并重写 GetResource 方法。 不要在实现中调用基。
- 将 CustomXamlResourceLoader.Current 设置为在初始化逻辑中引用类。 在加载包含
{CustomResource}
扩展用法的任何页面级 XAML 之前,必须发生这种情况。 设置 CustomXamlResourceLoader.Current 的一个位置是在 App.xaml 代码隐藏模板中为你生成的 Application 子类构造函数中。 - 现在,你可以使用
{CustomResource}
应用加载为页面的 XAML 中的扩展,也可以在 XAML 资源字典中使用扩展。
CustomResource 是标记扩展。 当要求转义特性值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性上放置类型转换器而言,此需求更具有全局性。 XAML 中的所有标记扩展在其属性语法中都使用“{”和“}”字符,通过此约定,XAML 处理器可以知道标记扩展必须处理属性。