Application theme:
StyleManager.ApplicationTheme = new CrystalTheme();
Docking theme:
<telerik:RadDocking Grid.Row="2" telerik:StyleManager.Theme="Office2016">
<telerik:RadDocking.DocumentHost >
<telerik:RadSplitContainer>
<telerik:RadPaneGroup>
<telerik:RadPane Header="Description">
<TextBlock TextWrapping="Wrap" Text="On the Documents tab above press Ctrl + Mouse Left button to display the Popup Menu. You can use the same combination on every tab."/>
</telerik:RadPane>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerik:RadDocking.DocumentHost>
<telerik:RadSplitContainer InitialPosition="DockedBottom">
<telerik:RadPaneGroup>
<telerik:RadPane Header="NonDraggable">
<TextBlock TextWrapping="Wrap" Text="This pane cannot be dragged, because it has its property CanFloat set 'False'."/>
</telerik:RadPane>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerik:RadDocking>
This happens because in the current version of Telerik, the IsTopmost of the ToolWindow that host the floating pane is set to True. That was needed for a related new functionality, but it brings a major behavioral change in the RadDocking control.
To work this around, you can subscribe to the ToolWindowCreated event of RadDocking and set the IsTopmost property of the creating ToolWindow to False.
private void RadDocking_ToolWindowCreated(object sender, Telerik.Windows.Controls.Docking.ElementCreatedEventArgs e)
{
var window = (ToolWindow)e.CreatedElement;
window.IsTopmost = false;
}
If you drag the pane from one RadDocking element to another, the ActivePane of the docking that started the drag operation is not cleared. The ActivePane should be updated (set to null, or updated in accordance to the PaneActivationMode setting) because the corresponding pane is no longer in this RadDocking instance.
To work this around, you can subscribe to and manually update the ActivePane property.
private void RadDocking_LayoutChangeEnded(object? sender, EventArgs e)
{
var docking = (RadDocking)sender;
if (docking.ActivePane != null && !docking.Panes.OfType<RadPane>().Contains(docking.ActivePane))
{
docking.ActivePane = null;
}
}