WinRT XAML-托管和非托管-它是如何工作的

WinRT XAML - managed and unmanaged - how does it work?

本文关键字:何工作 工作 XAML- WinRT      更新时间:2023-10-16

关于新的WinRT API和针对它的语言(直接或间接),以及它们与XAML的关系,我不理解。

  1. .NET语言(C#、VB.NET、F#)可用于构建XAML Metro在"api受限"CLR上运行的应用程序,而CLR又在WinRT上运行
  2. C++可用于生成直接在上运行的非托管XAML应用程序WinRT API之首

我的问题是,场景1中的XAML是转换为BAML,然后转换为MSIL(按照传统的.NET应用程序),还是有新的机制?如果不是,那么构建非托管应用程序的编译器如何将相同的XAML转换为本机指令?使用相同的编译策略可以解决这两种情况吗?如果是,那么怎么做呢?

在场景1中,编写metro应用程序时,不再使用.Net XAML实现System.Windows.Controls命名空间,而是使用Windows.UI.XAML.Controls.中的XAML控件

新命名空间中的XAML实现现在是WinRT的一部分,因此它是非托管的。当你在metro.Net应用程序中使用这些控件时,你实际上是在为这些WinRT控件使用运行时可调用包装器。

当你在非托管C++metro应用程序中使用XAML时,你使用的是未修改的WinRT控件,所以是的,它们被编译为本机代码,但没有从.Net到本机代码的转换。