Application.Resources 属性

定义

获取应用程序范围的资源的集合,例如样式、模板和画笔。

ResourceDictionary Resources();

void Resources(ResourceDictionary value);
public ResourceDictionary Resources { get; set; }
var resourceDictionary = application.resources;
application.resources = resourceDictionary;
Public Property Resources As ResourceDictionary
<Application>
  <Application.Resources>
    oneOrMoreResourceElements
  </Application.Resources>
</Application>
 

属性值

包含零个或多个应用程序范围的资源的 ResourceDictionary 对象。

示例

此示例演示如何声明特定于应用的资源, (此资源创建一个公共转换器类实例,该实例来自启动模板) 。 然后,它添加一个 Application.MergedDictionaries 属性元素,其中包含 ResourceDictionary 元素,每个元素按 URI 引用 XAML 文件作为 Source

<Application.Resources>
    <ResourceDictionary>
      <common:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> 
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="rd1.xaml" />
        <ResourceDictionary Source="rd2.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
  </Application.Resources>

注解

如果已使用 Windows Presentation Foundation (WPF) 或 Microsoft Silverlight 创建应用程序,Windows 运行时中的资源字典模型支持许多可能熟悉的 XAML 资源概念。 有关详细信息,请参阅 ResourceDictionary 和 XAML 资源参考

ResourceDictionary 中定义的用于填充属性元素的资源 Application.Resources 可从应用的任何页面进行检索。 如果应用的多个页面都使用同一资源,这很有利。 例如,如果你有一个 SolidColorBrush 资源,该资源用于应用的 UI 中的配色方案,并且该颜色用于大多数页面,那么在 用于 Application.Resources的 中Application.Resources声明 SolidColorBrush 是有意义的。

将资源添加到 Application.Resources时,请在任何现有 ResourceDictionary.MergedResources之前或之后添加资源。 XAML 的规则不允许将内容放在属性元素标记的两侧。 有关详细信息,请参阅 XAML 语法指南

以前版本的说明

Windows 8.1 中的资源加载优化

从Windows 8.1开始,应用模型和Windows 运行时 XAML 分析程序启用了资源加载优化。 对于Windows 8,XAML 分析程序从 app.xaml 加载资源,并将其作为启动的一部分创建为对象。 如果那里有大字典,那不是很有效。 此外,这些资源包括所有三个主题所需的项,三个主题中的两个甚至不会处于活动状态。 从Windows 8.1开始,XAML 分析程序仅在专门请求资源时创建资源。 请求可能来自其他资源,也可能来自加载每个资源时的应用或页面 XAML。 此分析程序行为可最大程度地减少在启动时读取应用级字典所需的时间,并使第一个应用页面在大多数情况下能够更快地加载。 仅当用户选择其他当前非活动主题成为活动主题时,才会加载其他当前非活动主题所需的资源。 届时,将基于新活动主题重新计算请求使用了 {ThemeResource} 标记扩展 的任何资源。

Windows 8 行为

Windows 8没有上述优化。 的 ResourceDictionaryApplication.Resources 必须完成分析,初始屏幕以外的任何页面才能加载到应用的 窗口。 因此,当你将应用重新定位为Windows 8.1时,你可能会看到一些时间差异。 应用应该加载得更快,但可能无法将此改进与你在重定向过程中对应用代码所做的其他更改隔离开来。 你可能会看到由于优化资源加载而导致的计时更改的一些位置包括分析程序调用构造函数的时间、 应用程序 对象、转换器或其他自定义类等对象。 对于针对 Windows 8 编译的应用,如果它在 Windows 8.1 上运行,将继续使用 Windows 8 行为。

有关性能和 XAML 资源分解的详细信息,请参阅 优化 XAML 标记

适用于

另请参阅