33

据我了解,WinRT 是不使用底层 Win32 API 编写的 WPF 的不同版本。

WinRT和WPF有什么关系?WPF 会在 Windows 7 中的 Metro 下工作,还是会启动经典桌面?

这在 Keynote 中并不是很清楚。如果有人安装了 Windows 8 可以确认它的行为。

谢谢

4

5 回答 5

37

WinRT 是Winapi的替代品。该 api 是本机的,与作为 CLR 之上的一个层运行的 WPF 非常不同。它当然类似于 WPF,这是导致混淆的部分原因。它采用托管代码的元数据格式,取代了旧的类型库。并将 XAML 用于 UI 设计,很像 WPF、Silverlight 和 Windows Phone。您仍然可以为 Windows 8 编写 WPF 应用程序,但您的应用程序不能通过商店发布,不能与 Metro 桌面集成,也不能在基于 ARM 内核的平板电脑上运行。这是否是一个真正的问题在很大程度上取决于 Metro 在市场上的表现。

于 2011-10-08T15:17:48.893 回答
11

Windows 运行时 (WinRT) 是用于创建 Metro 应用程序(以及更高版本的服务器应用程序)的替代 API。

API 是基于类/方法/结构的,并出现在 .Net Metro 应用程序、html5/css3/javascript 应用程序和 C/C++ Metro 应用程序中。

该实现是本机的。

API 通过 .winmd 文件可见,其中包含的元数据与 .Net 程序集中的元数据非常相似。

这些 API 旨在保护许多需要使用 async/await 的 API 并且异步友好,因为它们可能需要超过 50 毫秒的时间来执行。

它包括 Win32 API 和 COM API 的子集。

无论如何......以下链接帮助......频道9也有一些关于这个主题的//Build/视频......

Metro 风格的应用程序开发 - http://msdn.microsoft.com/en-us/windows/apps/

Metro 风格应用程序的 Win32 和 COM - http://msdn.microsoft.com/en-us/library/windows/apps/br205757(v=VS.85).aspx

Metro 风格应用程序的 API - http://msdn.microsoft.com/en-us/library/windows/apps/br211369(v=VS.85).aspx

于 2011-10-08T22:18:03.947 回答
11

WPF 和 WinRT 之间没有关系,就像 Silverlight 和 WPF 之间没有关系一样。现在我们拥有三种技术,WPF、Silverlight 和 WinRT。

如果您尝试执行 WPF 应用程序,它不会在 Metro 上执行,它只会在经典桌面上执行。

在 Visual Studio 2011 中,您将 WPF 和 Metro 作为两种不同类型的应用程序,而用于 WPF 和 WinRT 的 Xaml 并不相同,用于 WinRT 的 Xaml 与 Silverlight 几乎相同,因为 WinRT 中缺少 WPF 存在的许多类图书馆。但大多数 Silverlight 存在的类在 WinRT 中可用。

于 2011-10-08T15:17:48.707 回答
5

WinRT 是一个新库,您可以使用 XAML,但不能使用 WPF。

WPF 主要使用 DirectX 进行可视化。

您可以将 WinRT 用于:

  • XAML
    • C#
    • C++
    • VB.NET
  • HTML/JS/CSS
于 2011-10-08T14:24:05.477 回答
2

WinRT 是一种基于 COM 接口的非托管 API。您可以通过调用 .winmd 元数据文件(Windows\System32\WinMedataData 目录)中的对象来使用它。

所有命名空间都以“Windows.”开头。

您可以使用 XAML 文件编写 Windows 8 应用程序,但这是 WPF 的唯一共同点。

于 2013-01-12T18:39:32.223 回答