Implementing the UI Automation Dock Control Pattern

This topic introduces guidelines and conventions for implementing IDockProvider, including information about properties and methods. Links to additional references are listed at the end of the topic.
The Dock control pattern is used to expose the dock properties of a control within a docking container. A docking container is a control that allows you to arrange child elements horizontally and vertically, relative to each other. The following image shows a docking container with two child elements. For examples of controls that implement this control pattern, see Control Pattern Mapping for UI Automation Clients.

Docking example from Visual Studio where the "Class View" window is DockPosition_Right and the "Error List" window Is DockPosition_Bottom.

This topic contains the following sections.

  • Implementation Guidelines and Conventions
  • Required Members for IDockProvider
  • Related Topics

Implementation Guidelines and Conventions

When implementing the Dock control pattern, note the following guidelines and conventions:

  • IDockProvider does not expose any properties of the docking container or any properties of controls that are docked adjacent to the current control within the docking container.
  • Controls are docked relative to each other based on their current z-order; the higher their z-order placement, the farther they are placed from the specified edge of the docking container.
  • If the docking container is resized, any docked controls within the container will be repositioned flush to the same edge to which they were originally docked. The docked controls will also resize to fill any space within the container according to the docking behavior of their IDockProvider::DockPosition property. For example, if DockPosition_Top is specified, the left and right sides of the control will expand to fill any available space. If DockPosition_Fill is specified, all four sides of the control will expand to fill any available space.
  • On a multi-monitor system, controls should dock to the left or right side of the current monitor. If that is not possible, they should dock to the left side of the leftmost monitor or the right side of the rightmost monitor.

Required Members for IDockProvider

The following properties and methods are required for implementing the IDockProvider interface.

Required members Member type Notes
IDockProvider::DockPosition Property None
IDockProvider::SetDockPosition Method None

This control pattern has no associated events.