Share via


Walkthrough: Arranging WPF Content on Windows Forms at Design Time

This walkthrough shows you how to use the Windows Forms layout features, such as anchoring and snaplines, to arrange Windows Presentation Foundation (WPF) controls.

In this walkthrough, you perform the following tasks:

  • Create the project.

  • Create the WPF control.

  • Host WPF controls in a layout panel.

  • Use snaplines to align WPF controls.

  • Anchor and dock WPF controls.

Note

The dialog boxes and menu commands you see might differ from those described in Help depending on your active settings or edition. To change your settings, choose Import and Export Settings on the Tools menu. For more information, see Working with Settings.

Prerequisites

You need the following components to complete this walkthrough:

  • Visual Studio 2010.

Creating the Project

The first step is to create the Windows Forms project.

Note

When hosting WPF content, only C# and Visual Basic projects are supported.

To create the project

Creating the WPF Control

After you add a WPF control to the project, you can arrange it on the form.

To create WPF controls

  1. Add a new WPF UserControl to the project. Use the default name for the control type, UserControl1.xaml. For more information, see Walkthrough: Creating New WPF Content on Windows Forms at Design Time.

  2. In Design view, make sure that UserControl1 is selected. For more information, see How to: Select and Move Elements on the Design Surface.

  3. In the Properties window, set the value of the Width and Height properties to 200.

  4. Set the value of the Background property to Blue.

  5. Build the project.

Hosting WPF Controls in a Layout Panel

You can use WPF controls in layout panels in the same way you use other Windows Forms controls.

To host WPF controls in a layout panel

  1. Open Form1 in the Windows Forms Designer.

  2. In the Toolbox, drag a TableLayoutPanel control onto the form.

  3. On the TableLayoutPanel control's smart tag panel, select Remove Last Row.

  4. Resize the TableLayoutPanel control to a larger width and height.

  5. In the Toolbox, double-click UserControl1 to create an instance of UserControl1 in the first cell of the TableLayoutPanel control.

    The instance of UserControl1 is hosted in a new ElementHost control named elementHost1.

  6. In the Toolbox, double-click UserControl1 to create another instance in the second cell of the TableLayoutPanel control.

  7. In the Document Outline window, select tableLayoutPanel1. For more information, see Document Outline Window.

  8. In the Properties window, set the value of the Padding property to 10, 10, 10, 10.

    Both ElementHost controls are resized to fit into the new layout.

Using Snaplines to Align WPF Controls

Snaplines enable easy alignment of controls on a form. You can use snaplines to align your WPF controls as well. For more information, see Walkthrough: Arranging Controls on Windows Forms Using Snaplines.

To use snaplines to align WPF controls

  1. From the Toolbox, drag an instance of UserControl1 onto the form and place it in the space beneath the TableLayoutPanel control.

    The instance of UserControl1 is hosted in a new ElementHost control named elementHost3.

  2. Using snaplines, align the left edge of elementHost3 with the left edge of TableLayoutPanel control.

  3. Using snaplines, size elementHost3 to the same width as the TableLayoutPanel control.

  4. Move elementHost3 toward the TableLayoutPanel control until a center snapline appears between the controls.

  5. In the Properties window, set the value of the Margin property to 20, 20, 20, 20.

  6. Move the elementHost3 away from the TableLayoutPanel control until the center snapline appears again. The center snapline now indicates a margin of 20.

  7. Move elementHost3 to the right, until its left edge aligns with the left edge of elementHost1.

  8. Change the width of elementHost3 until its right edge aligns with the right edge of elementHost2.

Anchoring and Docking WPF Controls

A WPF control hosted on a form has the same anchoring and docking behavior as other Windows Forms controls.

To anchor and dock WPF controls

  1. Select elementHost1.

  2. In the Properties window, set the Anchor property to Top, Bottom, Left, Right.

  3. Resize the TableLayoutPanel control to a larger size.

    The elementHost1 control resizes to fill the cell.

  4. Select elementHost2.

  5. In the Properties window, set the value of the Dock property to Fill.

    The elementHost2 control resizes to fill the cell.

  6. Select the TableLayoutPanel control.

  7. Set the value of its Dock property to Top.

  8. Select elementHost3.

  9. Set the value of its Dock property to Fill.

    The elementHost3 control resizes to fill the remaining space on the form.

  10. Resize the form.

    All three ElementHost controls resize appropriately.

    For more information, see How to: Anchor and Dock Child Controls in a TableLayoutPanel Control.

See Also

Tasks

How to: Anchor and Dock Child Controls in a TableLayoutPanel Control

How to: Align a Control to the Edges of Forms at Design Time

Walkthrough: Arranging Controls on Windows Forms Using Snaplines

Reference

ElementHost

WindowsFormsHost

Other Resources

Migration and Interoperability

Using WPF Controls

WPF Designer