WPF与Winform互操作:[1]Winform调用WPF窗体

  • winform调用python winform调用wpf_WPF

    1
  • winform调用python winform调用wpf_winform调用python_02

    2
  • winform调用python winform调用wpf_WPF_03

    3
  • winform调用python winform调用wpf_winform调用python_04

    4
  • winform调用python winform调用wpf_互操作_05

    5
  • winform调用python winform调用wpf_互操作_06

    6
  • winform调用python winform调用wpf_winform调用python_07

    7

介绍Winform程序如何调用WPF窗体。

工具/原料

  • 以VS2013为例。

方法/步骤

  1.  
    创建Winform应用程序项目。
    打开VS2013,文件->新建->项目...,新建一个Windows窗体应用程序项目,项目名称为“Winform调用WPF窗体”。
    为Form1添加一个按钮,用于打开WPF窗体。

    winform调用python winform调用wpf_WPF_08

    winform调用python winform调用wpf_WPF_09

  2.  
    创建待调用的WPF窗体。
    为解决方案添加一个WPF应用程序项目,右键解决方案,添加->新建项目,创建一个WPF应用程序项目。
    在WPF应用程序界面上拖放一个TextBox(测试键盘输入)和Button按钮(调用Winform窗体,下篇经验介绍)。

    winform调用python winform调用wpf_winform调用python_10

    winform调用python winform调用wpf_应用程序_11

    winform调用python winform调用wpf_应用程序_12

  3.  
    为项目添加WPF相关引用。
    PresentationCore
    PresentationFramework
    System.Xaml
    WindowsBase
    WindowsFormsIntegration
    以及待调用“WPF窗体”项目

    winform调用python winform调用wpf_互操作_13

  4.  
    书写按钮事件,调用WPF窗体。
    如果不写ElementHost.EnableModelessKeyboardInterop(wpfwindow),调出WPF窗体的键盘输入不起作用。
    另外,使用WindowInteropHelper类为WPF设置owner。

    winform调用python winform调用wpf_互操作_14

  5.  
    查看效果。

    winform调用python winform调用wpf_WPF_15

    END

 

 

 

 

 

 

 

 

 

WPF与Winform互操作:[2]WPF调用Winform窗体


  • |
  • 浏览:16
  • |
  • 更新:2014-05-26 00:34
  • winform调用python winform调用wpf_winform调用python_16

    1
  • winform调用python winform调用wpf_互操作_17

    2
  • winform调用python winform调用wpf_互操作_18

    3
  • winform调用python winform调用wpf_WPF_19

    4


介绍WPF应用程序如何调用Winform窗体。

工具/原料

  • 以VS2013为例。

方法/步骤

  1. 1
    创建WPF应用程序项目。
    步骤为上篇经验 Winform调用WPF窗体 中步骤2所创建的项目,这里就不在详细描述了。
  2. 2
    创建一个Winform窗体应用程序。
    (为了避免项目循环引用,这里新建一个Winform程序项目)
    为解决方案添加一个Windows窗体应用程序项目,右键解决方案,添加->新建项目,创建一个Windows窗体应用程序项目(命名为“Winform窗体”)。
  3. 3
    为WPF应用程序项目添加Winform相关引用。
    System.Windows.Forms
    添加步骤2的项目引用:Winform窗体

    winform调用python winform调用wpf_WPF_20

  4. 4
    书写按钮事件,调用Winform窗体。
    这里,使用WindowInteropHelper类来协助WPF与Win32的互操作。
    WindowWrapper根据WPF窗体的WindowInteropHelper实例的Handle获得IWin32Window对象,用于Winform窗体Show调用时作为Winform窗体的Owner。
    需要说明的是:这里虽指定了Winform窗体的Owner,但是CenterParent是针对于Mdi窗体的,这里将不起作用。

    winform调用python winform调用wpf_互操作_21

    winform调用python winform调用wpf_互操作_22

  5. 5
    查看效果

    winform调用python winform调用wpf_WPF_23

    END