【问题标题】:How can I make a WPF window look like a Winforms window?如何使 WPF 窗口看起来像 Winforms 窗口?
【发布时间】:2018-02-11 18:14:09
【问题描述】:

我正在将 UI 从 winforms 转换为 WPF。以前,选择树视图只会根据所选的树视图项显示不同的 winform 页面。现在,我插入了一个 WPF DockPanel,每次选择树视图项时,都会将不同的 winformhost 元素添加到 WPF DockPanel。

当我在 winforms 上运行时,我的 UI 如下所示:

现在,当我使用带有 WinformHostElements 的 WPF DockPanel 运行我的应用程序时,我的 UI 如下所示:

我有没有办法将一种样式应用于 WPF DockPanel,看起来类似于 winform 控件?

(仅当我完成将所有 winform 元素转换为 WPF 元素时。)

【问题讨论】:

  • 其实你还是可以继续使用 Windows 窗体的。正如我最近了解到的,.NET Core 3.0 将重新引入 WinForms 支持。为了将 WinForms 项目从 .NET Framework 迁移到 Core 3.0,有一个专用工具。
  • 我最终还是转向了 WPF,因为我想在 XAML 上进行设计。但很高兴知道 WPF 和 WinForms 将能够迁移到 .NET Core 3

标签: c# wpf winforms visual-studio-2017


【解决方案1】:

在 WinForms 和 WPF 之间进行转换绝非易事。问题是 XAML 和 WPF/UWP 在设计时考虑了 MVVM 模式。虽然您可以使用其他设计模式,但这样做会错过大约 90% 的 XAML 功能,并且每隔一段时间就会遇到问题。几年前我写了一篇关于 MVVM 的介绍:https://social.msdn.microsoft.com/Forums/vstudio/en-US/b1a8bf14-4acd-4d77-9df8-bdb95b02dbe2/lets-talk-about-mvvm?forum=wpf

您现在拥有的可能是适合 MVVM 模型部分的类。但也许转换是不必要的:为了向后兼容(并填补一些空白),WPF 确实有办法托管 WindowsForm 时代元素:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/walkthrough-hosting-a-windows-forms-control-in-wpf

【讨论】:

    猜你喜欢
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2017-12-05
    • 2010-12-28
    相关资源
    最近更新 更多