Winforms 正在消亡,使用 XAML 和它的设计者就像拔牙一样。 现在怎么办?


我习惯于能够使用 Windows 窗体创建一个简单到中等复杂的 Windows 应用程序,并且能够让它轻松地布局所有内容。 我可以把大部分时间花在逻辑上。 这很好。

现在,有了 XAML、UWP 等,使用设计器就像去看牙医一样 – 但这有必要吗?

我不知道接下来该去哪里,因为除非我做错了,否则这些设计师根本不会加快我的速度。 它们毫无用处。 它们不具备 RAD 价值。

我宁愿用 C# 编写它。

你们都做什么? 我不可能是唯一的一个。

我尝试过的:

耐心。 娱乐物质。 放弃一切希望。

设计师简直太糟糕了。 可怕可怕可怕。 它们比手动输入 XML 更难使用,而且这也很糟糕。

解决方案5

除了已经有很多解决方案之外,我最近问了自己这个问题。
对于客户,我需要替换整个工厂的旧 VB6 应用程序。
网络不是一个选项,因为我需要与机器上的硬件进行通信(尽管现在我们正在研究它,这似乎不再是问题……)。

无论如何,一个明显的竞争者是 窗体,但正如你所说,那正在消亡。
微软将 WinForms 移植到了 .NET,所以它实际上还没有消亡,但我希望新软件是现代的。

那么那么 WPF(Windows 演示基础) 可能是逻辑上的后继者,因为它也被移植到.NET。
然而,WPF 是 XAML,正如您所说,这就像拔牙一样。
因此,我们会在一个最近才移植的旧框架中拔牙,以让一些脾气暴躁的老开发人员高兴(我猜)。

我见过 UWP(通用Windows平台) 这里提到过,但微软已经正式放弃了对它的支持,所以这甚至不再是一个选择!

然而,UWP 在幕后使用了 WinUI 2,并且 用户界面3 是仍受支持的官方继任者。
它是 XAML,但至少它是现代的!

看看 Microsoft 堆栈之外,我们有更多基于 Web 的解决方案,例如 欧诺平台
有两个对我来说很突出,它们分别是 Flutter 和 Uno 的真正替代品, 电子阿瓦洛尼亚用户界面
Visual Studio Code 是使用 Electron 构建的,因此您可以了解它的功能和外观。
它使用基于 Web 的技术,例如 HTML、CSS 和 JavaScript,并以某种方式将它们编译(?)为跨平台桌面应用程序。
Avalonia UI 使用 XAML(事实上,它被认为是 WPF 的精神继承者),但也生成跨平台桌面应用程序。
如果您选择 Avalonia UI 或 Uno,Avalonia 显然是赢家,在 GitHub 上拥有更大的社区。
另外,Avalonia 团队拥有来自 WPF 团队的(前)开发人员!
我对这些技术的问题是,虽然它们看起来很有效并且看起来很棒,但它们不是本机应用程序,这意味着它们自己进行绘图,而不是将其留给操作系统。
结果是,它们看起来和感觉起来根本就不是桌面/Windows/Apple 应用程序。

最终,我去了 .NET 已修复
.NET MAUI 是 Xamarin 的继承者,Xamarin 当然是一个移动框架。
然而,.NET MAUI 可以创建在移动和桌面上运行的跨平台应用程序!
至少在理论上是这样,因为在实践中你将面临很多挑战。
.NET MAUI 与 Xamarin 一样,也使用 XAML。
那么我为什么选择 .NET MAUI?
我们目前仅针对 Windows,对于 Windows,它编译为 WinUI 3,这是本机 Windows 应用程序。
WinUI 3 有更多选项,因为它不必也适用于移动设备,但 .NET MAUI 是最新最好的,我已经预见到将来也会有一些移动工作。
也就是说,.NET MAUI 也有点赌博,因为微软似乎没有很好地更新它,并且对于 .NET 7 中的一些严重错误只是说“你必须等到 .NET 8,因为我们不会为 .NET 7 修补 .NET MAUI。”
因此,许多 Xamarin 开发人员尚未接受 .NET MAUI,而是正在寻找替代方案。
到目前为止,它对我们来说看起来相当不错,我只是希望微软和社区能够更多地接受它。

最后但并非最不重要的一点是,您可以使用 .NET MAUI 与 Blazor,它允许您在桌面上的 .NET MAUI shell 应用程序中运行 Web 应用程序(HTML、CSS 和 JavaScript 与 .NET 混合)。
这是一个认真的考虑,但坦率地说,我也不想被网络技术所困扰,而且它也不会编译为本机 Windows 应用程序。

今年早些时候我已经弄清楚了这一切,所以请将此视为我的研究总结。

[Add]

要回答如何处理 XAML 的问题,它与 HTML 没有什么不同,不是吗?
我猜只是吸吮它。
[/Add]

解决方案2

Roger Deutsch 就此主题撰写了一系列文章: Windows 10 编程:UWP 焦点(N 中的 1)[^]。 我完成了这一切并成功构建了示例。 但由于我所有的编程只是为了好玩,我认为我将来不会经常使用它。

解决方案3

我的答案, 从休息室发出的交叉[^]。

如果我仍在使用 XAML,我会使用 Blend。 这需要一点时间来适应,但它比在 VS 中与布局设计师一起工作要优越得多。 当我必须编写纯桌面应用程序时,我会使用 AvaloniaUI。 比毛伊岛好多了。 现在,我大部分时间都使用 Blazor。 既可以在浏览器中运行,也可以作为 PWA 运行在桌面上。

解决方案4

尝试 Flutter,你不会失望的
我面临着和你一样的困境 – 为我的下一个项目选择正确的框架。
我评估了多种选择,最终决定使用 Flutter:它改变了游戏规则!
它为桌面和移动应用程序提供的开发速度和令人惊叹的视觉效果确实令人惊叹。
即使对于像我这样经验丰富的程序员(喜欢 C/C++!),Flutter 的学习曲线也出奇地快。

解决方案1

如果你想咆哮、闲聊等,那就使用 休息室[^] 论坛。 这适用于那些陷入困境或陷入困境并需要代码帮助的人。

コメント

タイトルとURLをコピーしました