In This Article

Control Hierarchy

Since a number of controls are involved in creating a docking window and MDI hierarchy, this topic delves into what can be contained by what in your XAML.

Note

When creating a layout programmatically (not in XAML), refer to some of the other topics in this documentation.

DockSite Hierarchy

The DockSite is always the root control in a docking window and/or MDI hierarchy. It implicitly creates a primary DockHost within its template. The DockSite has a single child control that becomes the child control of the primary DockHost in the template.

Screenshot

A DockSite hierarchy diagram

Child Content

The DockSite.Child can be one of the following:

Each SplitContainer has an Orientation property that indicates whether the splits are horizontal or vertical. SplitContainer objects can be nested to create complex hierarchies. SplitContainer children can be one of the following:

ToolWindowContainer controls contain one or more ToolWindow controls and provide a title bar and tabs for selecting between tool windows.

Workspace defines the area around which tool window can be docked. If no Workspace is included within the hierarchy, tool window inner-fill mode is activated. A Workspace control has a single child. If the Workspace.Content is a TabbedMdiHost, tabbed MDI is activated. If the Workspace.Content is a StandardMdiHost, standard MDI is activated.

This example shows two attached tool windows docked on the right side of a workspace with empty tabbed MDI:

xmlns:docking="http://schemas.actiprosoftware.com/winfx/xaml/docking"
...

<docking:DockSite>
	<docking:SplitContainer>
		<docking:Workspace>
			<docking:TabbedMdiHost />
		</docking:Workspace>

		<docking:ToolWindowContainer>
			<docking:ToolWindow Title="Tool Window 1" />
			<docking:ToolWindow Title="Tool Window 2" />
		</docking:ToolWindowContainer>
	</docking:SplitContainer>
</docking:DockSite>

Auto-Hide Configuration

To add tool windows into an auto-hide state, use the four auto-hide properties:

Each of those accepts one or more ToolWindowContainer controls, each of which can contain one or more ToolWindow controls.

This example shows two tool windows docked vertically on the right side of a workspace with empty tabbed MDI, and an auto-hidden tool window on the left:

xmlns:docking="http://schemas.actiprosoftware.com/winfx/xaml/docking"
...

<docking:DockSite>
	<docking:DockSite.AutoHideLeftContainers>
		<docking:ToolWindowContainer>
			<docking:ToolWindow Title="Tool Window 3" />
		</docking:ToolWindowContainer>
	</docking:DockSite.AutoHideLeftContainers>
							
	<docking:SplitContainer>
		<docking:Workspace>
			<docking:TabbedMdiHost />
		</docking:Workspace>
							
		<docking:SplitContainer Orientation="Vertical">
			<docking:ToolWindowContainer>
				<docking:ToolWindow Title="Tool Window 1" />
			</docking:ToolWindowContainer>
			<docking:ToolWindowContainer>
				<docking:ToolWindow Title="Tool Window 2" />
			</docking:ToolWindowContainer>
		</docking:SplitContainer>
	</docking:SplitContainer>
</docking:DockSite>

Tabbed MDI Hierarchy

When the Workspace.Content is a TabbedMdiHost, tabbed MDI mode is activated. Tabbed MDI is where the full size of the workspace is filled with one or more tabbed containers, with each tab representing a document. Windows can be cascaded or tiled.

Screenshot

A tabbed MDI hierarchy diagram

The TabbedMdiHost control has a single child, which can be one of the following:

Each SplitContainer has an Orientation property that indicates whether the splits are horizontal or vertical. SplitContainer objects can be nested to create complex hierarchies. SplitContainer children can be one of the following:

TabbedMdiContainer controls contain one or more ToolWindow and/or DocumentWindow controls and provide tabs for selecting between the documents.

This example shows a single document open in tabbed MDI:

xmlns:docking="http://schemas.actiprosoftware.com/winfx/xaml/docking"
...

<docking:DockSite>
	<docking:Workspace>
		<docking:TabbedMdiHost>
			<docking:TabbedMdiContainer>
				<docking:DocumentWindow Title="Document1.txt" Description="Text document" FileName="Document1.rtf">
					<TextBox BorderThickness="0" TextWrapping="Wrap" Text="This is a document window." />
				</docking:DocumentWindow>
			</docking:TabbedMdiContainer>						
		</docking:TabbedMdiHost>
	</docking:Workspace>
</docking:DockSite>

Standard MDI Hierarchy

When the Workspace.Content is a StandardMdiHost, standard MDI mode is activated. Standard MDI is the windowed variation of MDI, where each document is represented by a window that can be moved around within the workspace. Windows can be cascaded or tiled.

Screenshot

A standard MDI hierarchy diagram

The StandardMdiHost control contains one or more ToolWindow and/or DocumentWindow controls. It renders each document as a window.

This example shows a single document open in standard MDI:

xmlns:docking="http://schemas.actiprosoftware.com/winfx/xaml/docking"
...

<docking:DockSite>
	<docking:Workspace>
		<docking:StandardMdiHost>
			<docking:DocumentWindow Title="Document1.txt" Description="Text document" FileName="Document1.rtf">
				<TextBox BorderThickness="0" TextWrapping="Wrap" Text="This is a document window." />
			</docking:DocumentWindow>
		</docking:StandardMdiHost>
	</docking:Workspace>
</docking:DockSite>