WinForm转换为WPF

6

我能把整个WinForm应用程序转换成wpf应用程序吗? 我想把我的会计软件转换成Wpf,这可能吗?

3个回答

16
不,没有直接从Windows Forms到WPF的翻译。此外,直接这样做会很差,并导致WPF应用程序设计非常糟糕。我在我的WPF与MVVM系列中深入讨论了这个问题,特别是第3部分展示了当您像编写典型的Windows Forms应用程序一样编写WPF时会发生什么,但我随后展示了为什么这通常是个坏主意。WPF在其核心上建立在与Windows Forms非常不同的编程范例之上。最好将业务逻辑从Windows Forms中分离出来,然后编写一个新的WPF视图层来处理该逻辑。

2
+1 个不同的范式。我写了一个类似于 Windows Forms 应用程序的 Silverlight 应用程序,因为 UI 和逻辑都粘在一起,所以更新它时遇到了很多麻烦。从那时起,我真正理解了 MVVM 的价值。 - gideon
你对于用于转换的第三方工具或软件有何看法? - mahesh
2
@mahesh:我建议你阅读我的系列文章,网址是:http://reedcopsey.com/series/windows-forms-to-mvvm/。即使你找到了第三方解决方案进行转换,你会发现转换的结果通常比无用还要糟糕——最好手动完成转换。你可以使用Interop层逐步转换内容。 - Reed Copsey
我正在将一个采用MVP架构的Winform应用程序转换为WPF。当然,在这种情况下,MVP利用了Winform中的事件。在阅读了您的博客之后,我没有找到任何理由需要将事件驱动的架构更改为MVVM。我有什么遗漏吗? - Tae-Sung Shin
1
@Thomas 你不需要改变它 - WPF 将以这种方式工作。然而,随着时间的推移,你会发现更改它通常更有效。在任何地方都采用事件驱动使得 WPF 不够灵活,有点过于死板,但对于转换来说通常更容易... - Reed Copsey

1

这不像是将vb.net转换为C#之类的事情,WPF是一种完全不同的编写Windows应用程序的方式。

然而,如果您的代码被清晰地抽象出来,和/或者您的UI代码与逻辑分离,那么将其移植到WPF上就不应该有太多麻烦。

WPF还具有WindowsFormsHost类。这里有一个关于在WPF中托管Windows Forms控件的演示。


0

你需要重写相当多的代码。但是为了利用MVVM,这绝对是值得做的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接