将大型C#winforms应用程序升级到WPF的最简单方法是什么?

Chr*_*ris 13 .net c# wpf upgrade

我在一个大型的C#应用​​程序(大约450,000行代码)上工作,我们经常遇到桌面堆和GDI处理泄漏的问题.WPF解决了这些问题,但我不知道升级的最佳方式是什么(我希望这需要很长时间).应用程序只有几种形式,但这些形式可以包含许多不同的用户控件集,这些用户控件是以编程方式确定的.

这是一个内部公司应用程序,因此我们的发布周期非常短(通常为3周发布周期).

是否有一些渐进式的升级路径,还是我们必须在一次大规模的努力中获得成功?

Pho*_*bis 11

您可以从创建WPF主机开始.

然后,您可以使用<WindowsFormHost />控件来托管当前的应用程序.然后,我建议在WPF中创建一个新控件的库.一次一个,您可以创建控件(我建议将它们设置为自定义控件,而不是用户控件).在每个控件的样式中,您可以使用<ElementHost />控件来包含"旧"窗体控件.然后,您可以花时间重构并重新创建每个控件作为完整的WPF.

我认为仍然需要初步努力来创建控件包装器并为应用程序设计WPF主机.我不确定应用程序的大小和用户控件的复杂程度,所以我不确定会给你多少努力.相对而言,以这种方式在WPF中启动和运行应用程序的工作量要少得多,速度也快得多.

我不会那样做而忘记它,因为你可能会遇到控件相互叠加的问题(Windows窗体与WPF不兼容,尤其是透明胶片和其他视觉效果)

如果您需要更具体的指导,请向我们提供有关此项目状态的最新信息,或提供更多技术信息.谢谢 :)