We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
close icon

DockingManager and tabs

Hi, 

I'm trying to use the DockingManager to replace an existing docking framework.
What I need is the following:
The main window contains a TabControl for different workspaces.
The user selects a control and it gets added to the dockmanager (the active tab) and takes up all available space.
The user selects another control and it gets tabbed with the first control.
After that the user can tear off controls from their tabbed positions and place them anywhere in the dock.

What I have so far is this:
MainWindow xaml:
    <syncfusion:TabControlExt x:Name="tabs"
                              HorizontalAlignment="Stretch"
                              VerticalAlignment="Stretch"
                              TabStripPlacement="Bottom"
                              TabIndex="1"
                              IsNewButtonEnabled="True"
                              NewButtonClick="tabs_NewButtonClick"
                              PreviewMouseDown="tabs_PreviewMouseDown">
        <syncfusion:DockingManager x:Name="dock" UseDocumentContainer="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ContainerMode="TDI" TabGroupEnabled="True"/>
    </syncfusion:TabControlExt>

//Code for adding a new control to the window
public void AddControl(string header, FrameworkElement control)
{
    var activeTab = GetActiveTabFromTabControl();
    var dock = activeTab.dock;
    DockingManager.SetHeader(control, header);
    manager.Children.Add(control);
}

What this does is add a new control to the active tab but it's always docked to the left and sized to the content of the containing control.
Also if I keep adding controls to it they stack up to the right and even go out of the screen without a scrollbar appearing.
I've tried multiple versions of setting the DockState and DockSide on the control but none of that seems to make any difference.
What am I missing?


1 Reply

BA Berkunath A Syncfusion Team June 18, 2013 12:12 PM UTC

Hi Nisbus,

Thank you for your interests in Syncfusion products.

You can achieve your requirement by using the below code snippet,

[c#]

            ContentControl element = new ContentControl();
            string header="Dock"+Docking.Children.Count.ToString();
            DockingManager.SetHeader(element, header);
            DockingManager.SetState(element, DockState.Dock);
            DockingManager.SetSide(element, DockSide.Left, DockState.Dock);
            Docking.Children.Add(element);
   
We have attached the sample as per your requirements in the following link. Please run the sample and let us know if it helps you. If we have misunderstood your requirement please update us with more information.

[sample link]

http://www.syncfusion.com/downloads/Support/DirectTrac/109116/DockingSample2066444392.zip

Please let us know if you have any concerns.

Regards,
Berkunath A



DockingSample_b35fedb1.zip

Loader.
Live Chat Icon For mobile
Up arrow icon