代码之家  ›  专栏  ›  技术社区  ›  jasonk

是否可以通过容器/包装器将WinForm窗体宿主在WPF窗体中?

  •  6
  • jasonk  · 技术社区  · 16 年前

    有没有一种方法可以在WPF窗体中的某种容器或包装类型控件中承载/显示完整的WinForms窗体(而不仅仅是一个控件)?我m在概念上寻找类似于HTML中php或iframe的虚拟include的东西。可能通过编译成OCX或DLL。

    3 回复  |  直到 14 年前
        1
  •  6
  •   Ash    16 年前

    据我所知,您不能在WPF中承载实际的winforms表单。

    然而,一个好的选择是在WinForms中创建一个包含所有必需功能和子控件的普通用户控件(作为Windows窗体控件库项目)。

    然后在您的WPF项目中,引用windowsformsintegration.dll(应该在添加引用的.NET选项卡中)。

    然后还引用包含winforms用户控件的程序集,最后将windowsformshost容器添加到XAML。

    有关详细信息,请参阅 useful tutorial 萨夏理发师。

        2
  •  17
  •   whoisthemachine    14 年前

    您可以使用以下代码执行此操作:

    在你的XAML中:

    <WindowsFormsHost name="wfHost" />
    

    在您的代码背后:

    Form foo = new Form();
    foo.TopLevel = false;
    foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    wfHost.Child = foo;
    
        3
  •  1
  •   t0mm13b    16 年前

    有一篇关于 CodeProject 它演示了如何在winform s(它是一个使用选项卡页的应用程序,将winform.exe拖到它上面,它创建一个包含该窗口的选项卡页)上承载一个从本文派生的exe作为控件。 here .我知道你要求特别的水渍险,但也许这会引导你走向正确的方向?

    希望这有帮助, 最好的问候, 汤姆。