又看了一天的 Windows UI 相关的文档...
source link: https://www.v2ex.com/t/831456
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
结果还是乱乱乱!!!!!
WPF 和 UWP 傻傻分不清楚,有时候说 UWP 可以用,有时候又说 UWP 不能用, 新的.Net Core 居然不是系统自带。 WinUI3 目前还属于不稳定的状态,windowing 的功能虽然画勾了但是模式依然很固定,api 依然很少。 xaml 技术也不是主流,只能在 Windows 平台用一用。
微软总是什么都想要...绝了绝了绝了,我就想开发个桌面的 app ,太烦了。
learningman 5 天前 1
liuser666 5 天前
yayiji 5 天前 via Android
ychost 5 天前
ysc3839 5 天前 via Android
.NET Core 大概是继承了 Windows 不自带非必要运行时的传统,类似的 VC++ 运行库也是不自带的。
WinUI 3 个人感觉还没到可用的地步,目前更建议用 XAML Island 。
xiaocaoge 5 天前
nieyujiang 5 天前 via iPhone
chashao 5 天前
Mintonmu 5 天前
QingchuanZhang 5 天前
ffire 5 天前 via iPhone
makelove 5 天前
wzzzx 5 天前
jim9606 5 天前
商店的 WinUI3 Controller Gallery 样例甚至部分控件都没实现。
https://www.cnblogs.com/dino623/p/Get-started-with-WinUI-3-for-desktop-apps.html
https://www.cnblogs.com/dino623/p/test_winui3_preview3_performance.html
我也不知道是不是 UWP 的锅,我现在用的 Win11 预览版,只要用上 UWP 组件的(例如那个被骂上天的右键菜单),总会莫名其妙卡顿,搞不好还会传染给 WinUI3 应用。
agagega 5 天前 via iPhone
mingl0280 4 天前 via Android
传统路线——WinForm (省事,快),MFC (老古董)
现代路线——UWP ( Windows 应用商城 app ),WPF (普通桌面软件),二者均使用 XAML 作为界面描述。
以上二者建议使用.Net Framework 4.0 以上开发,新版 C#省事。
.Net core 不支持桌面 GUI 软件开发。
桌面跨平台:QT ,GTK ,两个都会让你做得想死(而且 QT 问题挺多的)。
基于浏览器的 GUI 就多了,Electron 什么的都还可以用,不过也别太指望跨平台了,复杂点的在 Linux 下能跑到五分钟崩一次都算是万幸了……
zk8802 4 天前 via iPhone
bankroft 4 天前
coolcfan 4 天前
thtznet 4 天前
jsq2627 4 天前
shayuvpn0001 4 天前
开发效率和兼容性综合起来最好的是 Winform ,没有什么花里胡哨的东西,该有的控件都有,多线程和底层支持也很完美,这么多年坑也踩得差不多了,Visual Studio 完美支持,兼容性你选.Net Framework 4.0 连 xp 都能跑,这样很多工控机都能照顾到。
稍微追求一点花里胡哨的就是 WPF ,后面的什么 UWP ,WinUI 根本不用看,一是框架本身后续微软的支持问题,二是论投入产出 Electron/QT 都比这些好,如果你是微软铁粉,当我(曾经的微软铁粉)上面这堆话没说。
uni 4 天前
azur 4 天前
orafy 4 天前
crayygy 4 天前
MS 好像有在弄 WinUI3 https://docs.microsoft.com/en-us/windows/apps/winui/winui3/
之前了解过一些,但还没正式 release ,所以目前只能观望,有做 Windows UI 的需求还是 QT or Win32/WPF 吧
crayygy 4 天前
placeholder 3 天前
zeal7s 3 天前
FrankHB 3 天前
区别无非是用户够多,坑能相互活埋,不太会有拎不清楚常规开发需求的维护者主动跳出来暴露智商,例如: https://github.com/dart-lang/language/issues/490 。
事实上,WPF 一样有类似的问题,但实现的优化质量好得多,以至于不少开发者自动忽略了。但是其它多数实现不大有这个余裕。
FrankHB 3 天前 1
所以一旦遇到控件这个层次上不能解决的问题(比如说,自己实现不能通过组合现有控件完全实现的新控件),问题就很可能陡然恶心起来:很可能用户就得把 Win32 UI 的花里胡哨的屎味咖喱过一遍,还比原生 Win32 破事更多(因为涉及互操作)。
Win32 的屎味咖喱也是为什么传统的搞 Win32 UI 的受不了纷纷跳出来搞新的一套所谓的 DirectUI 。
讲道理,原生的 HWND 其实确实是希望用户按传统意义的方式扩展的。这特别体现在任何一个像样的 Win32 控件都是桌面隐喻的所谓“窗口”( Windows 这个名字也指的是这个)上,而不是现在大多数最终用户理解的窗体和对话框。
但是 Win32 API 用 C 提供,不管对用户使用还是维护者扩展都有天坑(用户看不到 HWND 实现,微软也没可能让用户彻底看到),加上一些底层设计问题(如滥用低效的异步窗口消息、WndProc 的签名扩展性差甚至要用户折腾 thunk )和 Windows API 固有的更新周期导致跨操作系统版本体验碎片化(比如分层子窗口只在 Windows 8 后支持)导致这种方式最终是无药可救的。
在扩展 HWND 无望的情况下,Windowless 是自然选项了。如果把扩展 HWND 实现这样的权利看作是用户(桌面系统开发者)的自由,那么所有健全的 GUI 天生都是所谓的 DirectUI (所以这词虽然是微软开发者发明的,但也挺 low 的),而基于 HWND 封装的方案(包括 MFC 和 WinForms )只是残废版而已。
WinForms 这种咖喱味的屎在常规 Win32 用户的面前解决了旧的 Win32 C API 的一些屎味和随着操作系统版本分发导致的部分表面问题,但没办法解决根本问题(而且 .NET Framework 的分发周期早年一样挺欠揍的)。对原有 Win32 的就是只想搓出来个能看的 GUI 的最传统的用户,API 和工具易用性提升的开发效率已经足够可观,所以才能忍受;但对原本就受不了 HWND 又没法找到现成方案的用户再说,最终需要 hack Win32 的问题也是忍无可忍的。(所以现在还流行的就包括大部分倒腾工控机的,因为这些用户大多对干掉后者的屎味感知不大。)
(题外话,任意不是靠模拟来实现的“原生”GUI 风格的解决方案,不管是什么平台的,一样很可能有这里的残废屎味;至少遇到 Windows 就很可能放纵了;其实还有少数比 Win32 还烂的,比如各种 CAD 之类的私有界面扩展 API ……不过不提也罢。)
WPF 甩掉了 HWND 的包袱,才算是一个相对“完整”的 GUI 解决方案;而且相对 Win32 过渡到 WinForms ,工具的改进使过渡的体验更加平滑,这才是 WPF 的基本盘。至于 MVVM 和 XAML ,其实不像一些用户理解的那么适合传统桌面开发,既是加分项又是减分项(不过最传统的一些用户有些就只是待在 WinForms 觉得够用挺好,也就不会有什么有效反馈了)。当然,光说完成度,WPF 就够打翻 UWP 和现在的 WinUI 的了。
crackhopper 3 天前
ShikiSuen 2 天前
luodaoyi 1 天前
ikas 1 天前
如果是只支持 windows
1.win app sdk (包含 windows ui3)是以后的主路,现在支持 ui3 不够完善,但是基础的都有了,api 还少吗?你要知道 win app sdk 对于 win32 与 winrt 几乎没有任何限制..win32 的资源还少么??
2.uwp(包含 win ui2.7),现在就是成熟,即便 uwp/winrt 不支持,你现在也可以直接加入 win32 组件,使用 pipe 通信..
主流 ui 技术是什么?xaml 只是表象,在 windows 平台使用 xaml 已经很容易了...现在哪有跨平台又好用的原生 ui?
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK