WinForms和WPF在同一个项目中?

Cor*_*urn 1 .net wpf winforms

我正在寻找一些启示......我开始在WPF中开展一个项目,并且遇到了我在WinForms中编写的一些旧代码的需求.由于我认为两个平台之间存在巨大差异,我原本预计会出现某种类型的警告,但我决定将WinForms项目中的一些代码文件导入到新的WPF项目中,看看会发生什么.请注意,WinForms代码和WPF代码都在同一个项目中,它们被编译到同一个程序集中.期待一个错误,我不仅惊讶于我可以导入它,但代码工作正常.当然它们都是用C#和.Net 4.0编写的,但我没有意识到WPF和WinForms可以像这样共存.

我显然误解了这些框架的工作方式,有人可以解释这些框架如何在同一个程序集中共存而不会发生冲突吗?

Ed *_*tes 7

WPF和Winforms之间没有太大的区别,真的.他们都使用HWND来保存他们的内容.他们都使用消息泵.他们都解决了大多数事情的Win32调用问题.WPF和Winforms都使用资源.访问两者都会产生IL代码.它们仅引用不同的基本程序集,但这些基本程序集可以共存,就像在同一模块中同时使用System.Xml和System.IO一样.

主要区别在于内部,例如绘图/渲染方法,但您可以使用WinFormsHost在WPF中显示Winforms内容.