如何将.NET WPF应用程序转换为Windows窗体?

时间:2010-03-27 14:00:37

标签: .net wpf winforms

我们创建了一个设计精美的.NET WPF桌面应用程序。我们正在使用InnoSetup安装应用程序,如果不存在.NET 3.5,它会自动安装它。但是,下载.NET 3.5的软件包非常庞大,我们发现大约30%的用户因此没有完成安装。

显而易见的解决方案是使用Windows Forms将所有内容重新编码为.NET 1.1,但这是一项需要几周时间的重大开发。此外,如果支持这两个版本(并使用innosetup选择正确的版本)或者只是将WPF放在一起,我们将面临两难选择。

有没有简单的方法如何将WPF转换为Windows窗体?或者我们有其他选择可以考虑吗?

谢谢!

4 个答案:

答案 0 :(得分:6)

将WPF转换为WinForms并非易事,当然没有自动化的方式,如果你想回到.net 1.1那么你将失去一大堆其他功能,如泛型等,所以它不仅仅是您将要更改的UI。

最佳解决方案是定位.net client profile。这是一个小得多的下载。

如果您可以等待几周,.net 4.0中的客户端配置文件具有更好的离线安装和平台支持。请参阅herehere

答案 1 :(得分:1)

您可以使用.NET 3.5 SP1中引入的.NET Client Profile来减少在未安装.NET Framework 3.5的计算机上运行应用程序所需的下载大小。

.NET客户端配置文件的大小约为28 MB,如here所述。

另外,请查看this site以确定在系统上获取.NET Framework所需的最小,最简单的下载。

答案 2 :(得分:1)

既然你说“设计精美”,我会假设你广泛使用了WPF的UI元素。如果是这种情况,请忘记将UI移植回WinForms。

程序的非UI部分可以轻松地反向移植(可能根本没有任何更改)IFF(当且仅当)它们不引用任何2.0之后的东西(例如LINQ)。

答案 3 :(得分:0)

你试过Client only framework subset了吗?您只需选中项目设置中的一个框,它将使用精简的26 MB版本的.net 3.5。它也称为客户端配置文件 http://blogs.msdn.com/blogfiles/pietrobr/WindowsLiveWriter/.NETFramework3.5ClientProfile_8AF0/clip_image002_thumb.gif