2011-10-08 75 views
33

據我所知,WinRT是不使用底層Win32 API編寫的WPF的不同版本。Windows 8中的WinRT和WPF

WinRT和WPF有什麼關係? WPF能否在Windows 7下運行在Metro下,或者它會啓動經典桌面嗎?

從Keynote中不太清楚。如果有人安裝了Windows 8,可以確認它的行爲。

謝謝

+2

當你來自WPF時,預計會變得更糟。很多東西被刪除.. –

回答

5

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

WPF主要使用DirectX進行可視化。

您可以使用WinRT中有:

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

WPF切換到經典桌面還是在Metro下工作?謝謝 – bstodos

+0

WPF適用於桌面應用程序,而不是地鐵。 Metro應用程序必須用WinRT寫成AFAIK。 –

+0

但是我們應該能夠輕鬆地將我們的WPF模型和ViewModel移植到WinRT中,並且只需要重寫我們的視圖? –

10

有在WPF和WinRT之間沒有關係,就像Silverlight和WPF之間沒有關係。現在我們有三種技術,WPF,Silverlight和WinRT。

如果您嘗試執行WPF應用程序,它將不會在Metro上執行,它只會在經典桌面中執行。

在Visual Studio 2011中,您將WPF和Metro作爲兩種不同類型的應用程序,而Xaml對於WPF和WinRT不同,Xaml for WinRT與Silverlight幾乎相同,因爲許多WPF類存在在WinRT庫中缺失。但是Silverlight中的大多數類都可以在WinRT中使用。

37

WinRT是Winapi的替換。 api是本機的,非常不同於WPF,它作爲CLR頂層的一層運行。它確實類似於WPF,是導致混淆的一部分。它採用託管代碼的元數據格式,替換舊的類型庫。並將XAML用於UI設計,非常類似WPF,Silverlight和Windows Phone。您仍然可以編寫適用於Windows 8的WPF應用程序,但應用程序無法通過商店發佈,不會與Metro桌面集成,也不會在基於ARM內核的平板電腦上運行。這是否是一個真正的問題取決於地鐵在市場上的表現如何。

10

Windows運行時(WinRT)是一種替代API,用於創建Metro應用程序 (及更高版本的服務器應用程序)。

這些API是基於類/方法/結構的,並且出現在.Net metro應用程序,html5/css3/javascript應用程序和C/C++ metro應用程序中。

該實現是本地的。

通過.winmd文件使API可見,其中包含的元數據非常類似於.Net程序集中的元數據。

這些API旨在保護和異步友好,需要使用異步/等待的許多API,因爲它們可能需要超過50毫秒才能執行。

它包含Win32 API和COM apis的子集。

反正...在以下鏈接幫助... Channel9上也有一些//建立在主題/視頻..

Metro風格應用開發 - Metro風格http://msdn.microsoft.com/en-us/windows/apps/

Win32和COM應用 - http://msdn.microsoft.com/en-us/library/windows/apps/br205757(v=VS.85).aspx

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

2

WinRT的是基於COM接口的非託管API。您可以通過在.winmd元數據文件(Windows \ System32 \ WinMedataData目錄)中調用對象buit來使用它。

所有名稱空間都以「Windows」開頭。

您可以使用XAML文件編寫Windows 8應用程序,但這是WPF唯一的共同點。

相關問題