Infragistics3.Wpf.DockManager.v8.1
XamDockManager Class
See Also  Members   Example 
Infragistics.Windows.DockManager Namespace : XamDockManager Class

A custom control that arranges elements as panes similar to that of Microsoft Visual Studio.

Object Model




Syntax

Visual Basic (Declaration) 
Public Class XamDockManager 
   Inherits ContentControl
   Implements ICommandHost, IPaneContainer 
C# 
public class XamDockManager : ContentControl, ICommandHost, IPaneContainer  

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.

Visual BasicCopy Code
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
C#Copy Code
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;
}
XAMLCopy Code
<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>

See Also