现在的位置: 首页 > 综合 > 正文

How to host WPF Control into the Windows Form Application

2013年03月18日 ⁄ 综合 ⁄ 共 2430字 ⁄ 字号 评论关闭

Host a WPF control into Win32 Windows Form

 

This article would explain how to host a WPF control into the Windows Form. I would create the WPF Control, and a Windows form application, which would host the WPF control. In the next article we would see how event from WPF control could be passed to hosting
windows form.

 

Note: In Windows Form we can host only a WPF element, so we would use the Grid element in WPF and put the control(s) into it to make a user control. In this sample I would use button and text box WPF controls.

 

Step1. Creating the WPF Control:

  1. Open Visual Studio 2008. 
  2. Open the project creation template from File-> Create project menu.
  3. Select the WPF User Control Library.
  4. Name the project as WpfUserControlLib and create the project.
  5. It would create UserControl1.xaml and UserControl1.xaml.cs
    in the project.
  6. Inherit the UserControl1 from the Grid elemement instead of the UserControl, as I stated in the Note above we can not host a control rather we can host a element into the Windows Form. This change has to be done in both
    UserControl1.xaml and UserControl1.xaml.cs.
  7. Now Drop the lable, text box and two buttons(Ok and cancel).
  8. Build the WpfUserControlLib.

 

Make sure WpfUserControlLib contains following references, though Visual Studio 2008 would do these by itself

    • System
    • PresentationCore
    • PresentationFramework
    • WindowsBase

     

     

    Step 2: Creating the Windows Forms Host Application in the current solution:

     

    1. Open the project creation template from File-> Add ->New Project menu.
    2. Select Windows Form Application from the project template and name it
      WinFormWPFHostApp
      .
    3. From the Toolbox (WPF Interoperability Tab) drop the ElementHost Control to the Form1. It would be named as elementHost1.
    4. Set the Dock property to fill of elementHost1 control (Optional).
    5. Add the reference of WpfUserControlLib project created in the Step1.
    6. Create the class level variable of the WPFUsercontrol type as
    WpfUserControlLib.UserControl1 _WPFUserControl = null;

     

    1. Add the following code to create the instance of the WPF User control and attach it with Element Host in the constructor or load event of the form.

     

                elementHost1.Dock = DockStyle.Fill;
                _WPFUserControl = new WpfUserControlLib.UserControl1();
                elementHost1.Child = _WPFUserControl;

    1. Make sure the form size is good enough to display the WPF control.

    Make sure WinFormWPFHostApp contains following references, though Visual Studio 2008 would add these by itself.

      • WindowsBase
      • WindowsFormsIntegration 

      Compile and Run the Windows Application you would see the WPF control is hosted in the Windows Control.

       

      Summary: We can use the power of the WPF Controls visual elements into the WinForm application by hosting very easily. In the Next Article I would extend this to explain how to share the data and send the event to host from the WPF control.

      转自【http://www.a2zdotnet.com/View.aspx?Id=78#.Ub8fGZyvy3I】

      抱歉!评论已关闭.