RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 692630
Accepted
Philippe
Philippe
Asked:2020-07-15 23:14:30 +0000 UTC2020-07-15 23:14:30 +0000 UTC 2020-07-15 23:14:30 +0000 UTC

如果 WPF 更好,为什么每个人都在 WinForms 中编写应用程序?[关闭]

  • 772
关闭。这个问题不可能给出客观的回答。目前不接受回复。

想改进这个问题? 重新设计问题,以便可以根据事实和引文来回答。

5 年前关闭。

改进问题

在这个论坛上经常有这样开头的问题

我正在编写一个 WinForms 应用程序。[...]

我个人尝试过在 Win Form 和 WPF 上写,在我看来,WPF 在 UI 元素的设计方面更准确,更漂亮。此外,WPF 附带了一种很棒的 Xaml 语言,它比在 WinForms 中使用C#代码更容易使用。

对此,我问自己:Win Form 相对于 WPF 有什么优势,为什么很多人用 Win Form 编写,虽然它们设计过时且不受支持?

c#
  • 4 4 个回答
  • 10 Views

4 个回答

  • Voted
  1. Best Answer
    VladD
    2020-07-16T04:38:52Z2020-07-16T04:38:52Z

    WPF 确实比 WinForms 有很多优势。Binding我将调用绑定 ( ) 和的概念DataContext,它从根本上促进编写结构良好的程序,其中表示与模型、业务逻辑和内容分离,这是一个特别重要的优势。

    (并不是说在 WinForms 中不能正确编写,它要困难得多并且需要手动工作。)

    但这样做的后果和缺点是 WPF 作为框架的复杂性要高得多,进入WPF 的门槛要高得多,正确的编程实践也更高。毕竟,当您开始将内容与表示分离时,WPF 的威力就会显现出来,否则它并不比 WinForms 好多少。

    对于那些在 MFC 或类似的 UI 框架中有编程经验的人来说,切换到几乎相似的 WinForms 比学习有助于简单、方便的 WPF 编程的新概念(尽管更方便和高效)要容易得多。

    我认为这是 WinForms 仍然存在的主要原因。

    • 13
  2. sp7
    2020-07-16T04:13:24Z2020-07-16T04:13:24Z

    我不了解其他人,但我个人不记得上次使用 WinForms 是什么时候,如果桌面只是 WPF,无论听起来多么浮夸,在这种环境下它仍然领先于其他环境。不管是狗血的企业,还是“花蝴蝶”的应用,都无所谓。

    • 声明式编程,类似 web 的布局模型。
    • 分辨率独立性、硬件加速、多点触控支持。
    • 样式、触发器、模板、动画、音频和视频、命令、强大的绑定系统、路由事件。
    • 高级绘图功能。
    • 具有页面组织的应用程序。

    和一堆一切。此外,这项技术背后的思想、原则和哲学对我来说非常有吸引力,亲切而富有同情心。同时,我不是 WinForms 的狂热反对者或 WPF 狂热者,但如果你想一想,想想在“表单”上做什么是值得的,在 WPF 中实现了什么5 或 10 分钟,您就会不由自主地了解这项技术提供的所有力量和那些可能性。

    同时,就像一切平凡的事物一样,WPF 并不完美,也不是没有缺陷,但总有更多优点,这是事实。

    • 8
  3. Byulent
    2020-07-16T04:53:23Z2020-07-16T04:53:23Z

    这些人很可能是刚刚开始学习 .NET 的初学者。自然地,他们从更容易学习的 WinForms 开始。对他们来说,有些东西已经过时、不受支持等并不重要。他们的目标是学习如何编写程序。

    • 4
  4. Борис
    2020-07-16T02:33:42Z2020-07-16T02:33:42Z

    关于过时的设计,我不理解你......

    关于对 Win Forms 的支持,在我看来它并没有消失,你可以通过阅读有关 Visual Studio 2017 和 .net 4.7 的新闻看到这一点。

    我的个人观察:

    由于在 DirectX 上的工作,WPF 谈到了在屏幕上呈现元素的惊人速度。我的电脑非常适合每个人 - CPU 和 GPU,但实际上,在 Win Forms 中在屏幕上绘图要快得多(GDI 也不会停滞不前)。

    WPF 上的 DataGrid 控件非常原始(至少几年前是这样)。一般来说,这是呈现数据最重要的控件。它应该是非常通用的,在 Win Forms 中是这样,但在 WPF 中不是。对于DataGrid(WPF)中的数据虚拟化,只能通过DataSource来使用数据源本身的虚拟化。

    在 Win Forms 中,由于良好的旧事件机制(CellVlueNeeded 和 CellValueFormating),您实际上可以使用 DataGridView 做任何事情,而且它非常简单(好吧,DataSource 也已就位)。

    顺便说一下,有人可以告诉我 DataGrid 中是否有一种方法可以通过编程将焦点放在行号 N 上,而无需使用反射求助于 30 行代码?

    以我的拙见,WPF 非常适合飞行和飘动的星形按钮比其他任何东西都重要的应用程序。

    对于业务应用程序,其他一切都很重要,人们会长时间使用这些应用程序,每天使用多个小时。它们的功能很复杂,而且通常是非标准的。因此,他们的界面应该尽可能实用,而不是引起人们的注意。一个人不应该厌倦多彩和卡通化的界面。

    赞成WPF,我只能说在里面建界面的原理很有意思,因为它和网页里面的差不多。它非常有趣,但仍然很潮湿(仍然!WPF 是什么时候首次引入的!?)......是的,我不喜欢 XAML。

    -;)

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5