Windows 8中的WinRT和WPF

33

据我所了解,WinRT是一种不使用基础Win32 API编写的WPF不同版本。

WinRT与WPF有什么关系?WPF能在Windows 7的Metro下工作吗,还是它将启动经典桌面?

从主题演讲中并不太清楚。如果有人安装了Windows 8,则可以确认其行为。

谢谢


2
从WPF转移时要做最坏的打算。许多东西都被删除了。 - Tom Kerkhove
5个回答

37

WinRT是Winapi的替代品。 API是本地的,非常不像在CLR上运行的WPF层。 它确实类似于WPF,这部分引起了困惑。它采用了托管代码的元数据格式,取代了旧的类型库。并使用XAML进行UI设计,就像WPF、Silverlight和Windows Phone一样。你仍然可以为Windows 8编写WPF应用程序,但你的应用程序不能通过商店发布,也不会与Metro桌面集成,也无法在基于ARM核心的平板电脑上运行。这是否真正是一个问题在很大程度上取决于Metro在市场上表现如何。


11

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

如果你试图在Metro上运行WPF应用程序,它将无法运行,只能在传统桌面上运行。

在Visual Studio 2011中,你有WPF和Metro两种不同类型的应用程序,WPF和WinRT的Xaml并不相同,WinRT的Xaml与Silverlight的Xaml非常相似,因为在WinRT库中缺少了许多存在于WPF的类。但是大多数在Silverlight中存在的类在WinRT中都是可用的。


11

Windows Runtime(WinRT)是一个替代API,用于创建Metro应用(以及后来的服务器应用程序)。

这些API基于类/方法/结构,并提供给.Net Metro应用程序、html5/css3/javascript应用程序和C/C++ metro应用程序。

实现是本机的。

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

这些API旨在安全且异步友好,许多API需要使用async/await,因为它们可能需要超过50毫秒才能执行。

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

无论如何...以下链接有所帮助... Channel9也有一些关于此主题的//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


5

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

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

您可以使用以下方式之一使用WinRT:

  • XAML
    • C#
    • C++
    • VB.NET
  • HTML/JS/CSS

WPF会切换到经典桌面还是在Metro下工作?谢谢。 - bstodos
WPF是用于桌面应用程序的,而不是Metro。据我所知,Metro应用必须使用WinRT编写。 - Daniel A. White
但是我们应该能够轻松地将我们的WPF模型和视图模型移植到WinRT,而只需要重写我们的视图? - Aaron Murgatroyd
我认为这就是意图,如果您使用可移植类库。 - Daniel A. White

2

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接