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

有可能有一个同时包含Winforms和WPF的项目吗?

  •  10
  • serhio  · 技术社区  · 15 年前

    有可能有一个同时包含Winforms和WPF的项目吗?

    假设一个WinForm项目在WPF-one中一步一步地转换(form-by-form),那么在一个按钮上打开WinForm,在另一个按钮上打开WPF-one是可能的吗?

    5 回复  |  直到 15 年前
        1
  •  15
  •   Christian Hayter    15 年前

    对。你必须选择一种技术来显示应用程序中的每个物理窗口和控件,但没有理由不能混合和匹配。

    例如:

    • WPF窗口可以显示WinForms窗口。
    • WinForms窗口可以包含WPF内容(请参阅 ElementHost 控制)。
    • WPF窗口可以包含WinForms控件(请参阅 WindowsFormsHost
        2
  •  2
  •   hkon    15 年前
        3
  •  1
  •   mschaef    15 年前

    你可能要找的是 ElementHost 控制。它允许您获取WPF内容并将其托管在Windows窗体窗口中。更多详情请参见:

    http://msdn.microsoft.com/en-us/library/ms745781.aspx

    还有一个控件允许您执行相反的操作:从WPF中宿主Windows窗体内容:

    http://nayyeri.net/host-windows-forms-controls-in-wpf

    在这两者之间,可以灵活地移动WPF和Windows窗体之间的“分界线”。

    你需要记住一个警告。Windows窗体的内部工作方式是 HWND HWND公司 是WPF来管理z-order之类的东西。这对您意味着z-order并不总是按您所期望的方式工作,而且对于托管的Windows窗体控件,有些事情您无法做到,而对于传统的WPF元素,您可以做到(实际上有一种方法可以解决这个问题,但是它需要周期性地将HWND渲染成内存位图,将该位图渲染成WPF曲面,然后将定向到WPF曲面的事件重定向到底层 HWND公司

        4
  •  1
  •   Community Mohan Dere    8 年前

    将Winforms添加到WPF项目可以顺利完成(直接从“addnewitem”菜单),但是没有直接的选项将WPF窗口添加到Winforms项目。不过,我还是按照以下步骤进行了处理:

    1. 添加一个WPF用户控件(此选项在“addnew 将UserControl父标记更改为Window,并删除 this link ).

    2. 添加对System.Xaml.dll的引用。看到了吗 this link .

    3. 添加对System.Windows.dll的引用(我在计算机上的以下路径找到它:C:\Program Files(x86)\reference Assemblies\Microsoft\Framework.NETFramework\v4.5)。请注意,这可能与您的不同)。看到了吗 this link .

        5
  •  0
  •   Rafal T    15 年前

    许多示例都使用MessageBox.Show作为Windows.Forms的一部分。

    推荐文章