.Net 5.0 有沒有可能 WPF 跨平台?

很希望.net core的gui跨平台,可微軟就是死守windows。有微軟內部的員工嗎?都想用qt了。


只要你放棄一個csproj文件搞全部的話,下面這個可以讓你在熟練掌握設計模式的前提下,讓一個XAML UI的絕大多數代碼跨平台,然後分別編譯。

https://docs.microsoft.com/en-us/xamarin/cross-platform/

C#、.net基礎庫和XAML都是跨平台的,只是configuration沒有而已,這個你自己搞定就好了。 代碼共享,一個平台一個csproj,鏈接到不同的庫上,多大點事。


不會

wpf綁定很多windows native的東西 還有directx 不可能移植


.NET5是肯定不會的啦,之前Build2019就宣布了版本規劃的,裡面是沒有的。

雖然眼前不會,但不代表永遠不會。

WPF是一個蠻優秀的技術,.Net5會繼續保有,隨著框架的統一,底層CLR統一了,後續應該會繼續擴充的,將來肯定會有跨平台的客戶端框架,也許換個名字?

從.Net到.Net Core到.Net5,作為十多年的.Neter,是能看到微軟的雄心壯志的,所以,拭目以待吧~


都有Blazor了,WPF還有跨平台的必要麼?


沒可能的,因為 微軟做這個工作 無利可圖。

而且還會對自己的Windows帶來更多的不利。

雖然微軟擁抱了linux,但是那主要是在服務端,是因為linux服務端的佔有率不可小覷,為了吸引數量可觀的開發者。

但是桌面端,微軟目前完全沒必要做這個投入,因為windows依然是桌面系統的主流。目前絕大部分桌面UI都是 windows UI技術。

誠然 有些程序 兼容了 linux 以及macOS。但始終都是極少數。

至於QT 想用就用唄,又沒人攔著你。


樓主想要 XAML+C# 跨平台可以使用Avalonia或者Xamarin.Forms,不要死抱著WPF不放。


跨個幾把

WPF的底層是DX+Win32,全部基於window

不過我覺得

XAML這個東西的理念,

WPF的理念是可以跨。

先進,高效。寫起來很爽,流暢,

可以說某種意義是我不需要思考語法。

手在鍵盤,心中有圖,一把梭


WPF 跨平台技術上很容易

微軟是公認的GUI技術最強的公司,Qt、Java都可以做到,微軟投入資源必然能做得更好。稍一發力,微軟的VS Code就成為跨平台開發第一神器,.NET Core成為性能最好的Linux後台之一。

根本原因是WPF跨平台,不符合微軟商業利益。實際上是損害微軟商業利益的。

微軟是開門賺錢的商業公司。Qt為什麼被多次甩賣,因為跨平台GUI做到第一也賺不了多少錢。微軟從WPF跨平台中很難獲得足夠的收入,反而會大幅侵害Windows的收益。


官方跨平台希望不大,MS不是放新聞說.NET 6.0 就出MAUI嘛~ 官方跨平台,也只是IOS 安卓 + Win而Linux那裡要靠開源社區去搞。


微軟的xamarin主打跨平台,


很難哎,WPF是Windows presentation foundation的縮寫,很難離開Windows。個人覺得跨平台也沒多大意思。與其執著於跨平台,到不如建議微軟把devexpress收購了,直接將其嵌入到visual studio中,這樣微軟在Windows桌面應用這塊就無敵了。


比較難.

WPF 用到了很多所謂 "Windows only" 的技術. 尤其是 DirectX. 想讓 WPF 跨平台一個大前提是必須把作為 WPF 底層的 DirectX Introp 和 Win32 那一層全部換掉

[1]

雖然WPF 已經開源了, 但是這個 "給路虎換底盤" 的操作著實還是相當複雜的. Windows 和 Linux 各發行版之間甚至於 MacOS 之間界面渲染機制不一樣. API適配也是個大問題. 不過也不是沒有先例可以參考. 那個現在已經基本涼涼的 GTK# 就是一個可以參照的例子.

不過微軟移植 WPF 只是為了產品延續性罷了. 我想微軟也不想再重蹈 WindowsPhone 的覆轍. 但微軟並沒有保證 WPF 這玩意真的給你做成跨平台的啊? .NET Core 本身的重點就不在 GUI 開發上好吧? GUI 開發除了 WPF 還有很多啊, GTK#, Avalonia. 再往大了說還有 QT, Electron, Java swing 等等跨平台 UI 引擎和框架. 為啥這麼糾結於 WPF....

參考

  1. ^WPF Architecture https://miteshsureja.blogspot.com/2011/06/wpf-architecture.html


一提到WPF跨平台,就有人提DirectX,真的是把分層和抽象全都吞了,合著用xaml的xamarin.forms不存在的?合著sliverlight屍骨無存?

.net blog調研過UI跨平台,wpf跨平台不是沒可能,但是就算真的想,5.0估計是來不及了。但是不管如何,哪怕你要提winform_mono qmlnet qtsharp gtk# gtk#_xaml_linux avalonia等跨平台UI,也必須由微軟提拔一個說這是正統的才有戲,否則永遠只是個暗無天日的小玩具。

.Net的跨平台UI開發必然還會加強,但還摸不清會怎麼做。

blazor很多人推,但是我覺得他和http://asp.net一樣,需要一個很厲害的控制項庫才好用,他的服務端渲染很厲害,這能讓部分應用安全方便,但是他也有他的問題。所以web端我還是選擇angular或者vue。

想要跨平台開發大型程序,直接上qt,或者qmlnet也行,絕對不要等wpf。

順便放一篇文章:油麵筋塞肉:微軟這麼多強大的UI開發框架為何比吹的失敗的多


你為什麼在期待 WPF 還會有新功能?


圖個啥?為了讓大量Windows客戶端軟體順著wpf的桿爬到Linux上,Linux佔有率提高,威脅Windows的壟斷地位?


微軟已經對WPF跨平台進行了否認。

不過還是可以關注其他跨平台UI,比如Avalonia


有個歪門——也算不得如何歪門的方法,blazor一套前端+後端,再用wasmer這個運行時去執行blazor編譯出來的wasm,就可以脫離瀏覽器做應用了,微軟對blazor很熱心。


雖然不是WPF 不過UWP跨平台已經做得挺不錯了

Uno Platform 支持Web iOS和安卓 C#寫的UWP可以源碼級兼容

之前把微軟開源的UWP計算器整成全平台還上架App Store和Google Play 叫Uno Calculator

就是性能不咋地...

類WPF框架還有Avalonia 也是跨平台的 還支持用CoreRT編譯


微軟:憑什麼~

個人覺得應該不會,GDI+有跨平台的實現,但是DirectX沒有。不過這個事情應該是微軟不想而不是微軟不能。


對於微軟來說實現WPF跨平台根本不是什麼難事,WPF的分層設計做的非常好,DirectX和XAML是完全隔離的,所以替換掉DirectX不是多難的事,而且微軟本身就做過跨平台的嘗試,SilverLight就相當於一個WPF的精簡版,可能是WPF跨平台不符合微軟的商業策略,所以微軟沒有朝這個方向努力。


推薦閱讀:

CC++代碼優化的27個建議
我的Vulkan (一) 改進基礎結構
6個 C語言入門必備實用工具
為什麼寫鏈表的時候總是停止工作?
Linux 平台相關代碼的 C++ 解決方案

TAG:NET | C | WindowsPresentationFoundationWPF |