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