0

我正在编写一个将使用 WPF 或 WinForm 运行的应用程序。这个想法是,如果 Windows Presentation Foundation 不在系统上(例如旧服务器),我希望 WPF 故障转移到 Winform。

我不希望将它们“组合”起来,而是将它们与 WinForm 分开设计一个 WPF 表单。

这可能吗?

4

4 回答 4

4

这没有意义。

  • 如果开发面向 .Net Framework 3.0 或更高版本的 .Net 应用程序,则 WPF 将存在(它是 .Net Framework 的一部分)。

  • 如果您没有安装该版本,则如果它的目标是不存在的框架版本,winforms 应用程序也不会运行。

  • 任何给定的 .Net 应用程序都必须针对特定版本的框架,当然,该特定版本必须存在于它将运行的机器中。

  • 如果您想要一些“回退”机制,您将必须构建同一应用程序的 2 个不同版本,一个针对 .Net 2.0,另一个针对 3.0 或更高版本,它们将是彼此无关的独立应用程序。

澄清:

如果说 .Net Framework 4.0 安装在给定的机器上,那么 WPF 就会安装在该机器上。WPF 是 .Net 框架的一部分,从 .Net 3.0 开始。

于 2013-04-17T18:01:22.083 回答
0

您是否打算为您的应用程序安装安装程序?如果是这样,您可以检查系统上安装了哪个版本的 .NET 框架,然后确定要安装哪个版本的应用程序。

为了重用您的一些代码,您可以拥有一个库,您的应用程序的两个版本都可以将其用于与演示无关的业务逻辑。

于 2013-04-17T18:02:46.377 回答
0

我认为这在大量工作中是不可能的。通常,如果缺少依赖项,Windows 会在启动时将所有依赖项加载到内存中,您的应用程序将崩溃。可以选择让它延迟加载,但这是一项安静的艰苦工作。

您可以使用用于 Windows 窗体的 dll 和用于 WPF 的第二个 dll 来实现它。您可以在启动和加载时检查系统,而不是当前系统的 GUI。

但是,我建议只编写一个 Windows 窗体 UI。实施每一个思考双重并不是很有效。

于 2013-04-17T17:59:40.953 回答
0

我实际上已经实现了一个同时具有 WinForms 和 WPF 用户界面的程序。我首先实现了 WinForms,然后当人们抱怨 WinForms 看起来“太 90 年代”时添加了 WPF。目前,旧 UI 仍可通过“-winforms”命令行选项使用。我使用 MVVM 并严格禁止在视图模型中使用 WPF 类;因此,大部分代码在两个版本之间共享。WinForms 本身并不能很好地支持 MVVM 模式,但我使用了Update Controls框架,它提供了自己独特的 MVVM 方法,作为位于 WinForms 之上的库(并与 WPF 无缝集成)。

然而,你想做的事情是相当具有挑战性的。WPF 附带 .NET 3.5(3.0?),因此您可能需要单独的可执行文件,一个用于 .NET 3.5,一个用于 2.0。(我对此不是 100% 确定的,因为 .NET 3.5 实际上仍然使用相同的 2.0 CLR 二进制文件;所以它可能以某种方式在一个可执行文件中完成。)

但是为什么要这么麻烦呢?现在几乎所有的计算机都安装了 .NET 3.5,没有的计算机可以升级。

于 2013-04-17T18:13:12.273 回答