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.
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:
- DockSite.AutoHideLeftContainers
- DockSite.AutoHideTopContainers
- DockSite.AutoHideRightContainers
- DockSite.AutoHideBottomContainers
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.
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.
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>