Application.LoadComponent 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
LoadComponent(Object, Uri) |
加载位于指定相对位置的 XAML 文件,并将其转换为由 XAML 文件的根元素指定的 对象的实例。 |
LoadComponent(Object, Uri, ComponentResourceLocation) |
加载位于指定相对位置的 XAML 文件,并将其转换为由 XAML 文件的根元素指定的 对象的实例。 |
LoadComponent(Object, Uri)
加载位于指定相对位置的 XAML 文件,并将其转换为由 XAML 文件的根元素指定的 对象的实例。
public:
static void LoadComponent(Platform::Object ^ component, Uri ^ resourceLocator);
/// [Windows.Foundation.Metadata.Overload("LoadComponent")]
static void LoadComponent(IInspectable const& component, Uri const& resourceLocator);
[Windows.Foundation.Metadata.Overload("LoadComponent")]
public static void LoadComponent(object component, System.Uri resourceLocator);
function loadComponent(component, resourceLocator)
Public Shared Sub LoadComponent (component As Object, resourceLocator As Uri)
参数
- component
-
Object
Platform::Object
IInspectable
与要加载的 XAML 内容的根元素类型相同的对象。
- 属性
注解
LoadComponent 主要用于基础结构。 可以看到 LoadComponent 作为生成的 InitializeComponent 逻辑的一部分,该逻辑集成了 XAML 页面的分部类及其代码隐藏。
调用堆栈中有时会引用 LoadComponent,因为异常最终是因为应用尝试分析错误的 XAML。 在这种情况下,应用代码无法更改 LoadComponent 的使用方式,修复该问题的方法是在 XML 编辑器中检查 XAML 源并修复它。 堆栈跟踪消息中可能有用的是确认未加载哪个 XAML 文件。 在已合并资源或正在合并其他多个 XAML 源的情况下,无法分析的并非总是明显的页面级 XAML。
涉及加载 XAML 内容和生成对象树的大多数应用方案都应改用 XamlReader.Load 。
Windows 8.1 中的资源加载优化
从Windows 8.1开始,应用模型和Windows 运行时 XAML 分析程序启用了资源加载优化。 此方案中涉及 LoadComponent,因为它在内部调用,以实际加载来自 XAML 文件的任何资源字典,包括 MergedDictionaries 的资源字典。 对于 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 标记。
另请参阅
适用于
LoadComponent(Object, Uri, ComponentResourceLocation)
加载位于指定相对位置的 XAML 文件,并将其转换为由 XAML 文件的根元素指定的 对象的实例。
public:
static void LoadComponent(Platform::Object ^ component, Uri ^ resourceLocator, ComponentResourceLocation componentResourceLocation);
/// [Windows.Foundation.Metadata.Overload("LoadComponentWithResourceLocation")]
static void LoadComponent(IInspectable const& component, Uri const& resourceLocator, ComponentResourceLocation const& componentResourceLocation);
[Windows.Foundation.Metadata.Overload("LoadComponentWithResourceLocation")]
public static void LoadComponent(object component, System.Uri resourceLocator, ComponentResourceLocation componentResourceLocation);
function loadComponent(component, resourceLocator, componentResourceLocation)
Public Shared Sub LoadComponent (component As Object, resourceLocator As Uri, componentResourceLocation As ComponentResourceLocation)
参数
- component
-
Object
Platform::Object
IInspectable
与要加载的 XAML 内容的根元素类型相同的对象。
- componentResourceLocation
- ComponentResourceLocation
枚举的一个值。
- 属性