从 Windows 窗体迁移到 WPF...值得吗?

2024-02-09

我还有一个用 Windows 窗体编写的中等大小的桌面应用程序(由数据库中的 46 个表支持的几十个主要窗体)。我正在考虑在 WPF 中重写 UI,但在我去那里之前,我很好奇是否有任何关于进行此类转换的战争故事。

I use LLBLGen http://en.wikipedia.org/wiki/LLBLGen生成低级数据访问对象,并且在其之上有一个业务逻辑层。尽管主表单使用缓存对象来最大程度地减少更常见导航路线上的往返行程,但表单仍通过数据绑定到业务逻辑对象。用户界面never直接与数据库对话:始终通过 UI -> 业务逻辑 -> 低级 -> 数据存储路径。

我经常使用的一个控件是 TreeView,它充当视觉指南和短程导航工具。该树已通过图标、突出显示颜色进行了大量自定义,这是我最担心移植的控件。

有没有一个故事可以说服我继续进行转换(或者相反,等到 Microsoft 更接近于从 Windows Forms 下撤出地毯)?

编辑:有人在评论中问我转换的动机是什么。我对未来的证明有些担心:我有 500,000 行代码,这些代码最初是 ASP 的,VBScript http://en.wikipedia.org/wiki/VBScript。随着时间的推移,我们一直在将功能移植到 ASP.NET 和 C#,但前提是我们对代码进行了更改。优点是我们将成本降至最低,缺点是一半的代码仍然是 ASP 和 VBScript。我担心 Windows 窗体应用程序会出现类似的情况。

我担心吗today关于 Windows 窗体的消失?甚至还没有接近......但该应用程序正在从 ASP 和 VBScript 转向 ASP.NET 和 C#,其背后有九年的历史,并且可能在这十年内不会被取代(相反,它只是会发展)。桌面应用程序同样是一个具有多年历史的长期项目。


对我来说,WinForms 与 WPF 的决定很简单 - 如果普通人要使用它,用户界面可以决定胜负。

这绝对是一个陡峭的学习曲线。但我从来没有完成过一个漂亮的 WPF 应用程序并说“伙计,我应该使用 WinForms”。

我想说的是,只要有可能,就应该努力让你的 UI 为你的客户提供更好的服务,所以如果是这样的话,对 WPF 来说是的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Windows 窗体迁移到 WPF...值得吗? 的相关文章

随机推荐

  • 如何从 PHImageManager 获取方形缩略图?

    有人知道如何从 PHImageManager 获取方形拇指吗 PHImageContentModeAspectFill 选项无效 PHImageManager defaultManager requestImageForAsset PHAs
  • 如何从多维数组(没有循环)中获取单一类型的数组[重复]

    这个问题在这里已经有答案了 我有以下数组 foo array 10 0 gt array 4 merchantId gt string 5 12e21 programId gt string 27 ddd3333 networkId gt
  • 如何将 Composer 供应商文件夹提交到 Git 存储库?

    我可以设置吗 gitignore以这种方式允许 Composer 依赖项 供应商目录 存在于我的存储库中 作曲家正式建议您 不应该 这样做 它提供了三个原因 https getcomposer org doc faqs should i c
  • 显示当天的项目

    我希望创建一个函数 从 mySQL 表中获取随机项目 但让我将返回的项目保留为 当天的项目 换句话说 昨天是 当天的项目 的项目不应再次显示 直到所有其他项目都显示为当天的项目 关于如何以优雅的方式做到这一点有什么建议吗 Thanks 添加
  • 查询 INFORMATION_SCHEMA 时出现死锁

    我有一个进程可以根据已发布的元数据层的更改动态更改 SQL2K5 表结构 例如 如果需要添加新列并且表没有依赖项 步骤将是 1 使用 T SQL 为表中已存在的任何索引和主键创建脚本 这些脚本包含在下面 2 删除表 3 从具有新列的元层重新
  • 在 Swift 3 中将可选字符串转换为双精度

    我有一个选项字符串 想将其转换为双精度 这在 Swift 2 中有效 但自从转换为 Swift 3 后 我得到的值为 0 var dLati 0 0 dLati latitude as NSString doubleValue 我进行了检查
  • firestore规则路径的大小

    我试图在 firestore 规则中使用路径的大小 但无法让任何东西发挥作用 并且在 firestore 文档中找不到有关如何执行此操作的任何参考 我想使用最后一个集合名称作为规则中的参数 所以尝试了以下方法 match test docu
  • IBM Worklight 5.0.6 - 如何向 Android 环境添加启动屏幕?

    我在尝试在 Android 中添加启动屏幕时遇到问题 下面是我使用的代码 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState su
  • T-SQL 将秒格式化为 HH:MM:SS 时间

    有没有什么棘手的方法来格式化秒 例如小时 分钟 秒 例如 3660 秒将显示为 01小时01分00秒 or 01 01 00 我知道执行此操作的标准方法 将所有秒除以 3600 即可得到小时 将剩余秒数除以 60 即可得到分钟 剩下的都是秒
  • 使用 PHP 函数自动向 标签添加宽度和高度属性

    我想要的是一个可以根据用户输入运行的函数 该函数将智能地查找并添加width and height任何属性 img HTML blob 中的标记 以避免图像加载时的页面重排问题 我正在为 PHP 论坛编写发布脚本 其中用户的输入在写入数据库
  • JQuery ajax 加载 XML,在 IE 或 Edge 中不起作用

    这是我目前拥有的 xml
  • 如何获取显示器序列号?

    有谁知道如何用 C 或 C 获取连接的显示器序列号 我找到了一些代码 但它们是用vbs编写的 我不明白 我需要一些用 C 或 C 编写的示例代码 我知道序列号是从 EDID 读取的 但不幸的是我不知道如何 有人可以帮助我吗 Thanks 更
  • 是否可以在无头模式下使用 JDT 加载 eclipse Java 项目?

    我有一个 Eclipse Java 项目 想要获取项目源目录 类路径等信息 我当前的实现解析 project文件 但由于我没有找到任何描述其结构的官方文档 project文件中 我对这种方法的稳健性有些担忧 一种更方便 更可靠的方法是使用
  • 智能指针。何时、何地以及如何?

    首先 由于智能指针有不同类型 我想将这个问题集中在其中两种 引用计数侵入式智能指针和非侵入式智能指针 针对每种指针类型单独询问该问题 我不太确定如何提出我的问题 所以这就是我不问的 我不是问为什么或何时需要智能指针 也不知道我应该使用哪种类
  • 如何在运行时修改我的 App.exe.config 键?

    在我的 app config 中我有这个部分
  • CRAN 包提交 - R CMD 检查

    我正在构建一个想要提交给 CRAN 的包 我完成了 R CMD 检查 使用 devtools check 并确保在构建我的包 devtools build 之前修复所有错误 警告和注释 然后将生成的 tar gz 文件提交到 CRAN 然而
  • 单元测试、黑盒测试和白盒测试[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 什么是单元测试 黑盒测试和白盒测试 我用谷歌搜索 但我发现的所有解释都非常技术性 任何人都可以用适当的例子以简单的方式回答这个问题吗
  • Laravel 4:如果帖子不存在,则使用控制器重定向页面 - 尝试过但到目前为止失败

    我正在使用 Laravel 4 我有一个显示帖子的页面 例如example com posts 1 显示数据库中的第一篇文章 我想要做的是 如果有人尝试访问不存在的网址 则将页面重定向到索引 例如如果没有帖子编号 6 则 example c
  • 将函数包装在同一文件中

    我需要你的建议来包装我现有的功能 我来自测试团队 我需要编写单元测试用例 所以我不想依赖原始定义 所以尝试编写我自己的定义 以下是不应更改的源代码 来源 c include
  • 从 Windows 窗体迁移到 WPF...值得吗?

    我还有一个用 Windows 窗体编写的中等大小的桌面应用程序 由数据库中的 46 个表支持的几十个主要窗体 我正在考虑在 WPF 中重写 UI 但在我去那里之前 我很好奇是否有任何关于进行此类转换的战争故事 I use LLBLGen h