Version

XamDockManager Class

A custom control that arranges elements as panes similar to that of Microsoft Visual Studio.
Syntax
'Declaration
 
Public Class XamDockManager 
   Inherits System.Windows.Controls.ContentControl
public class XamDockManager : System.Windows.Controls.ContentControl 
Example
This example demonstrates how to initialize a XamDockManager with ContentPanes in the various supported states (e.g. floating, unpinned) and also creates a DocumentContentHost to provide a tabbed document ui similar to that of Visual Studio.

Imports Infragistics.Windows.DockManager

Private Sub InitializeDockManager(ByVal dockManager As XamDockManager)
    ' Left dock area with unpinned pane and pinned pane 
    Dim splitLeft As New SplitPane()
    XamDockManager.SetInitialLocation(splitLeft, InitialPaneLocation.DockedLeft)
    splitLeft.SplitterOrientation = Orientation.Horizontal
    Dim cpLeftUnpinned As New ContentPane()
    cpLeftUnpinned.Header = "TreeView"
    cpLeftUnpinned.IsPinned = False
    cpLeftUnpinned.Content = New TreeView()
    splitLeft.Panes.Add(cpLeftUnpinned)

    Dim cpLeftPinned As New ContentPane()
    Dim tb As New CheckBox()
    tb.Content = "Toggle"
    cpLeftPinned.Header = "Toggle"
    cpLeftPinned.Content = tb
    splitLeft.Panes.Add(cpLeftPinned)

    ' Bottom dock area with vertical split 
    Dim splitBottom As New SplitPane()
    XamDockManager.SetInitialLocation(splitBottom, InitialPaneLocation.DockedBottom)
    splitBottom.SplitterOrientation = Orientation.Vertical

    Dim cpBottomText As New ContentPane()
    cpBottomText.Header = "TextBox"
    cpBottomText.Content = New TextBox()
    splitBottom.Panes.Add(cpBottomText)

    Dim cpBottomList As New ContentPane()
    cpBottomList.Header = "ListView"
    cpBottomList.Content = New ListView()
    splitBottom.Panes.Add(cpBottomList)

    ' Floating dockable split pane 
    Dim splitFloating As New SplitPane()
    XamDockManager.SetInitialLocation(splitFloating, InitialPaneLocation.DockableFloating)
    XamDockManager.SetFloatingLocation(splitFloating, New Point(100, 100))
    XamDockManager.SetFloatingSize(splitFloating, New Size(350, 200))

    Dim tgpFloating As New TabGroupPane()
    Dim cpRichText As New ContentPane()
    cpRichText.Header = "RichText"
    cpRichText.Content = New RichTextBox()
    tgpFloating.Items.Add(cpRichText)

    Dim cpCheck As New ContentPane()
    cpCheck.Header = "CheckBox"
    cpCheck.Content = New CheckBox()
    tgpFloating.Items.Add(cpCheck)

    splitFloating.Panes.Add(tgpFloating)

    ' note, the order in which the panes are defined/added 
    ' affects their position within the dockmanager. those 
    ' defined first will be positioned closer first and will 
    ' be closer to the outer edge of the dockmanager 
    dockManager.Panes.Add(splitLeft)
    dockManager.Panes.Add(splitBottom)
    dockManager.Panes.Add(splitFloating)

    ' XamDockManager is a ContentControl so the content can be 
    ' anything but use a DocumentContentHost to include a VS 
    ' like tabbed document interface that can participate in 
    ' the docking 
    Dim dch As New DocumentContentHost()

    ' a document content host contains 1 or more split panes 
    Dim splitDch As New SplitPane()

    ' those split panes can only contain a tabgrouppane 
    Dim tgpDch As New TabGroupPane()

    Dim cpText As New ContentPane()
    cpText.Header = "TextBox"
    cpText.Content = New TextBox()
    tgpDch.Items.Add(cpText)

    Dim cpButton As New ContentPane()
    Dim btnInDch As New Button()
    btnInDch.Content = "Button"
    cpButton.Header = "Button"
    cpButton.Content = btnInDch

    tgpDch.Items.Add(cpButton)
    splitDch.Panes.Add(tgpDch)
    dch.Panes.Add(splitDch)

    dockManager.Content = dch
End Sub
using Infragistics.Windows.DockManager;

private void InitializeDockManager(XamDockManager dockManager)
{
	// Left dock area with unpinned pane and pinned pane
	SplitPane splitLeft = new SplitPane();
	XamDockManager.SetInitialLocation(splitLeft, InitialPaneLocation.DockedLeft);
	splitLeft.SplitterOrientation = Orientation.Horizontal;
	ContentPane cpLeftUnpinned = new ContentPane();
	cpLeftUnpinned.Header = "TreeView";
	cpLeftUnpinned.IsPinned = false;
	cpLeftUnpinned.Content = new TreeView();
	splitLeft.Panes.Add(cpLeftUnpinned);

	ContentPane cpLeftPinned = new ContentPane();
	CheckBox tb = new CheckBox();
	tb.Content = "Toggle";
	cpLeftPinned.Header = "Toggle";
	cpLeftPinned.Content = tb;
	splitLeft.Panes.Add(cpLeftPinned);

	// Bottom dock area with vertical split
	SplitPane splitBottom = new SplitPane();
	XamDockManager.SetInitialLocation(splitBottom, InitialPaneLocation.DockedBottom);
	splitBottom.SplitterOrientation = Orientation.Vertical;
	
	ContentPane cpBottomText = new ContentPane();
	cpBottomText.Header = "TextBox";
	cpBottomText.Content = new TextBox();
	splitBottom.Panes.Add(cpBottomText);

	ContentPane cpBottomList = new ContentPane();
	cpBottomList.Header = "ListView";
	cpBottomList.Content = new ListView();
	splitBottom.Panes.Add(cpBottomList);

	// Floating dockable split pane
	SplitPane splitFloating = new SplitPane();
	XamDockManager.SetInitialLocation(splitFloating, InitialPaneLocation.DockableFloating);
	XamDockManager.SetFloatingLocation(splitFloating, new Point(100, 100));
	XamDockManager.SetFloatingSize(splitFloating, new Size(350, 200));

	TabGroupPane tgpFloating = new TabGroupPane();
	ContentPane cpRichText = new ContentPane();
	cpRichText.Header = "RichText";
	cpRichText.Content = new RichTextBox();
	tgpFloating.Items.Add(cpRichText);

	ContentPane cpCheck = new ContentPane();
	cpCheck.Header = "CheckBox";
	cpCheck.Content = new CheckBox();
	tgpFloating.Items.Add(cpCheck);

	splitFloating.Panes.Add(tgpFloating);

	// note, the order in which the panes are defined/added 
	// affects their position within the dockmanager. those 
	// defined first will be positioned closer first and will 
	// be closer to the outer edge of the dockmanager
	dockManager.Panes.Add(splitLeft);
	dockManager.Panes.Add(splitBottom);
	dockManager.Panes.Add(splitFloating);

	// XamDockManager is a ContentControl so the content can be
	// anything but use a DocumentContentHost to include a VS
	// like tabbed document interface that can participate in 
	// the docking
	DocumentContentHost dch = new DocumentContentHost();

	// a document content host contains 1 or more split panes
	SplitPane splitDch = new SplitPane();

	// those split panes can only contain a tabgrouppane
	TabGroupPane tgpDch = new TabGroupPane();

	ContentPane cpText = new ContentPane();
	cpText.Header = "TextBox";
	cpText.Content = new TextBox();
	tgpDch.Items.Add(cpText);
	
	ContentPane cpButton = new ContentPane();
	Button btnInDch = new Button();
	btnInDch.Content = "Button";
	cpButton.Header = "Button";
	cpButton.Content = btnInDch;
	
	tgpDch.Items.Add(cpButton);
	splitDch.Panes.Add(tgpDch);
	dch.Panes.Add(splitDch);

	dockManager.Content = dch;
}
<igDock:XamDockManager>
    
<!-- The Panes collection is collection used to create the 
         root split pane that contain the floating, docked and 
         unpinned content panes 
-->
    
<igDock:XamDockManager.Panes>
        
<!-- note, the order in which the panes are defined/added 
             affects their position within the dockmanager. those 
             defined first will be positioned closer first and will 
             be closer to the outer edge of the dockmanager 
-->
        
        
<!-- Left dock area with unpinned pane and pinned pane -->
        
<igDock:SplitPane igDock:XamDockManager.InitialLocation="DockedLeft"
                          
SplitterOrientation="Horizontal">
            
<!-- Unpinned pane -->
            
<igDock:ContentPane Header="TreeView" IsPinned="False">
                
<TreeView />
            
</igDock:ContentPane>
            
<igDock:ContentPane Header="Toggle">
                
<ToggleButton Content="Toggle" />
            
</igDock:ContentPane>
        
</igDock:SplitPane>
        
        
<!-- Bottom dock area with vertical split -->
        
<igDock:SplitPane igDock:XamDockManager.InitialLocation="DockedBottom"
                          
SplitterOrientation="Vertical">
            
<igDock:ContentPane Header="TextBox">
                
<TextBox/>
            
</igDock:ContentPane>
            
<igDock:ContentPane Header="ListView">
                
<ListView/>
            
</igDock:ContentPane>
        
</igDock:SplitPane>

        
<!-- Floating dockable split pane -->
        
<igDock:SplitPane igDock:XamDockManager.InitialLocation="DockableFloating"
                          
igDock:XamDockManager.FloatingLocation="100, 100"
                          
igDock:XamDockManager.FloatingSize="350,200">
            
<igDock:TabGroupPane>
                
<igDock:ContentPane Header="RichText">
                    
<RichTextBox />
                
</igDock:ContentPane>
                
<igDock:ContentPane Header="CheckBox">
                    
<CheckBox />
                
</igDock:ContentPane>
            
</igDock:TabGroupPane>
        
</igDock:SplitPane>
    
</igDock:XamDockManager.Panes>

    
<!-- XamDockManager is a ContentControl so the content can be
         anything but use a DocumentContentHost to include a VS
         like tabbed document interface that can participate in 
         the docking 
-->
    
<igDock:DocumentContentHost>
        
<!-- a document content host contains 1 or more split panes -->
        
<igDock:SplitPane>
            
<!-- those split panes can only contain a tabgrouppane -->
            
<igDock:TabGroupPane>
                
<igDock:ContentPane Header="TextBox"><TextBox /></igDock:ContentPane>
                
<igDock:ContentPane Header="Button"><Button Content="Button" /></igDock:ContentPane>
            
</igDock:TabGroupPane>
        
</igDock:SplitPane>
    
</igDock:DocumentContentHost>
</igDock:XamDockManager>
Requirements

Target Platforms: Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2012, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also