很希望.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跨平台不符合微软的商业策略,所以微软没有朝这个方向努力。


推荐阅读:
相关文章