将 WPF 控件与 WinForms 一起使用
Posted
技术标签:
【中文标题】将 WPF 控件与 WinForms 一起使用【英文标题】:Using a WPF Control with WinForms 【发布时间】:2021-05-28 18:48:39 【问题描述】:我有一个自定义的 WPF 按钮控件,我想将此控件与 WinForm 应用程序一起使用。我知道如何使用 ElementHost 将 WPF 用户控件与 WinForm 一起使用。但我不知道将任何单个控件(不是用户控件)与 WinForm 应用程序的所有成员一起使用。你能建议我实现这一目标的好方法吗
【问题讨论】:
坚持一个平台。如果您的应用程序很小(比如说总共少于 100 个控件),请将整个应用程序转换为 WPF。如果它太大或者你不能决定重写它(比如超过 1000 个控件),坚持 WinForms 直到你可以重写它。在标准的 Winform 上贴一个花哨的按钮看起来非常丑陋,它也会带来技术上的复杂性 【参考方案1】:使用System.Windows.Forms.Integration
命名空间中的ElementHost
Here是详细教程
【讨论】:
那篇文章描述了如何将 WPF 用户控件添加到 Winforms。但我想添加一个控件,其所有成员不是用户控件 @pasanmaduranga,请再次检查... ElementHost 控件用于 WinForms 中的 WPF,就像 WindowsFormsHost 用于 WPF 中的 WinForms 我真正想要的是 WInForms 中的 WPF 嗯,同样,ElementHost 是一个 WinForm 控件,可用于承载 WPF 元素。 ElementHost 是你要找的东西,检查一下。我不明白,为什么你认为它是用于在 wpf 中托管 winform 的?【参考方案2】:您不能将它包装到 UserControl 中吗?您仍然可以使用 Host.CustomizedButton.xxx 来访问所有属性和方法。
【讨论】:
以上是关于将 WPF 控件与 WinForms 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
在默认 AppDomain 中的 Winforms 中托管 WPF 用户控件的弹出窗口中的选项卡导航损坏
NET Core 3.1 WinForms Designer 与 WPF 用户控件不兼容
在 WinForms 应用程序中使用 WPF,将应用程序资源放在哪里?