a modern docking windows approach for WPF

add namespace as shown
xmlns:netdock="clr-namespace:NetDock;assembly=NetDock"create surface for docking
<netdock:DockSurface x:Name="dockSurface"></netdock:DockSurface>you can add your dock contents programmatically
var item = new DockItem(yourCustomWpfUserControl)
{
TabName = "tab & window title"
};
dockSurface.Add(item , DockDirection.Bottom);for windows, use dock item with DockWindow
DockItem item = GetMyDockItem();
var win = new DockWindow(item);
// win.Show() or some other action etc