C# 从Winforms迁移到WPF

C# 从Winforms迁移到WPF,c#,.net,wpf,winforms,migration,C#,.net,Wpf,Winforms,Migration,我们有一个基于.NET1.1框架和Winforms的旧应用程序。我们计划将其迁移到.Net的最新版本 以下是我脑海中的一些问题: 我们应该使用Winforms还是WPF 我们希望设计和结构与现在完全相同 迁移时我会遇到什么样的陷阱 有什么地方可以让我查看迁移过程吗 还有其他建议吗 我们应该使用Winforms还是WPF 这是一个非常广泛的问题。但我的答案是这样的。Winforms designer是一种痛苦的体验,它在任何方面都不如WPF灵活,所以如果这对您很重要,那么您应该这样做 我们希望设计

我们有一个基于.NET1.1框架和Winforms的旧应用程序。我们计划将其迁移到.Net的最新版本

以下是我脑海中的一些问题:

  • 我们应该使用Winforms还是WPF
  • 我们希望设计和结构与现在完全相同
  • 迁移时我会遇到什么样的陷阱
  • 有什么地方可以让我查看迁移过程吗
  • 还有其他建议吗
  • 我们应该使用Winforms还是WPF

    这是一个非常广泛的问题。但我的答案是这样的。Winforms designer是一种痛苦的体验,它在任何方面都不如WPF灵活,所以如果这对您很重要,那么您应该这样做


    我们希望设计和结构与现在完全相同

    在Winforms中执行的任何操作都可以在WPF中复制,因此无需担心

    迁移时我会遇到什么样的陷阱

    我们迁移的最常见的方法之一是转换WinForms中的现有逻辑(是的,这是一个蹩脚的、外包的、充满业务逻辑的遗留WinForms),并将其连接到WPF元素。这个过程本身并没有那么复杂,但是当你有太多相互交织的片段时,它会变得非常丑陋

    有什么地方可以让我查看迁移过程吗

    迁移过程几乎必须是迭代的。所以很多人基于我的研究(文章、答案等等)是通过ElementHosts来实现的

    1) 针对WinForms中要切换到WPF的特定部分,然后将其取出

    2) 将其替换为ElementHost

    3) 然后在ElementHost中,您将拥有新重写的WPF副本

    4) 测试它,确保它与其他元素一起正常工作

    5) 转到步骤1,直到替换该窗口上的其余内容为止(根据您的具体情况,您可以按任何方式替换窗口上的元素,包括页眉、中间、页脚或顶部、底部)


    6) 一旦大部分内容被替换,您就可以将所有这些WPF用户控件合并到一个WPF窗口中。

    我感觉这个问题要么是关于的格式。您缺少一些有关您正在使用的环境的详细信息。例如,如果您仍在运行Windows XP,.NET 4.5甚至不适合您。“我们希望设计和结构与现在完全相同。”真的吗?你为什么要那样。NET4.5和WPF实现了比1.1和WPF更好的设计Winforms@EugenePodskal字体我知道它太宽了。。但我没有别的地方可去。很抱歉。@OhaxNuv:将是Windows 7和更新的操作系统。出于对.NET的热爱,请在WPF部分使用MVVM。@AvetisG:谢谢您的回复。这有助于我开始。@BradleyDotNET:如果它在WPF中。。我一定会选择MVVM。谢谢你的建议