c# .net8 winform 嵌入 wpf 控件

空明流光 / 2024-10-21 / 原文

.net framework 例子很多,但 .netcore 的很难找,经过和 gpt 很长时间的沟通,完成了。 关键点是 vs2022 似乎还不支持设计时的 ElementHost,所以必须通过代码初始化。

1. 新建一个 wpf 控件库

2. 创建一个导圆角的 TextBox,控件名为 UserControl1

3. winform 项目添加对 wpf 控件库项目的引用

4. 在 winform 项目设置中找到 "启用WPF" 选项,选中它

5. using System.Windows.Forms.Integration; // 用于 ElementHost

6. 创建控件代码如下:

public Form1()
{
    InitializeComponent();

    // 创建 WPF 控件实例
    var wpfControl = new UserControl1();

    // 创建 ElementHost
    var host = new ElementHost
    {
        Location = new Point(200, 200),
        Size = new Size(500, 70),
        Child = wpfControl // 将 WPF 控件添加到 ElementHost                
    };

    // 将 ElementHost 添加到 WinForms 窗体
    this.Controls.Add(host);
}

大功告成!