Back to Devexpress

Move Panels Between DockLayoutManager Instances

wpf-400980-controls-and-libraries-layout-management-dock-windows-move-layout-panels-between-dock-layout-managers.md

latest3.7 KB
Original Source

Move Panels Between DockLayoutManager Instances

  • Sep 27, 2022

Run Demo: Dock Layout Manager - Drag Panels Between Dock Managers Demo

Use the Link(DockLayoutManager, DockLayoutManager) method to link two DockLayoutManager instances. The link allows you to drag and drop panels between DockLayoutManager instances within one application domain.

xaml
<dxdo:DockLayoutManager x:Name="dockLayoutManagerTop" DockPanel.Dock="Top" FloatingMode="Desktop">
    <!--...-->
</dxdo:DockLayoutManager>
<dxdo:DockLayoutManager x:Name="dockLayoutManagerBottom" DockPanel.Dock="Bottom" FloatingMode="Desktop">
    <!--...-->
</dxdo:DockLayoutManager>
csharp
DockLayoutManagerLinker.Link(dockLayoutManagerTop, dockLayoutManagerBottom);
vb
DockLayoutManagerLinker.Link(dockLayoutManagerTop, dockLayoutManagerBottom)

Note

The linked DockLayoutManager instances should have the same FloatingMode property value.

If you link several DockLayoutManager controls and save/restore the layout for them, item names within all these controls must be unique.

Limitation

You cannot drag DockLayoutManager panels between different applications/threads.

Use the DockLayoutManagerLinker.Unlink method to remove a link between two DockLayoutManager instances.

csharp
DockLayoutManagerLinker.Unlink(dockLayoutManagerTop, dockLayoutManagerBottom);
vb
DockLayoutManagerLinker.Unlink(dockLayoutManagerTop, dockLayoutManagerBottom)

Link DockLayoutManager instances to drag and drop panels between these instances.

xaml
<dxdo:DockLayoutManager x:Name="dockLayoutManagerTop" DockPanel.Dock="Top" FloatingMode="Desktop">
    <!--...-->
</dxdo:DockLayoutManager>
<dxdo:DockLayoutManager x:Name="dockLayoutManagerBottom" DockPanel.Dock="Bottom" FloatingMode="Desktop">
    <!--...-->
</dxdo:DockLayoutManager>
<dxdo:DockLayoutManager x:Name="dockLayoutManagerRight" DockPanel.Dock="Right" FloatingMode="Desktop">
    <!--...-->
</dxdo:DockLayoutManager>
csharp
DockLayoutManagerLinker.Link(dockLayoutManagerTop, dockLayoutManagerBottom);
DockLayoutManagerLinker.Link(dockLayoutManagerTop, dockLayoutManagerRight);
DockLayoutManagerLinker.Link(dockLayoutManagerBottom, dockLayoutManagerRight);
vb
DockLayoutManagerLinker.Link(dockLayoutManagerTop, dockLayoutManagerBottom)
DockLayoutManagerLinker.Link(dockLayoutManagerTop, dockLayoutManagerRight)
DockLayoutManagerLinker.Link(dockLayoutManagerBottom, dockLayoutManagerRight)