Got this weird behavior with RadDocking with multiple monitors. http://www.youtube.com/watch?v=8DDX5OiYRyM As you could see the pane is being opened on the wrong side. This happens only when the application is fully maximized, if its resized then this problem does not occur. I am not able to reproduce this with a simple example. But you could contact me I can help in investigation.
workaround: add the following visual state to the DocumentHostTemplate of the RadPaneGroup: <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="DropDownDisplayStates"> <VisualState x:Name="DropDownButtonCollapsed" /> <VisualState x:Name="DropDownButtonVisible"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DropDownButtonElement" Storyboard.TargetProperty="Visibility"> <DiscreteObjectKeyFrame KeyTime="0"> <DiscreteObjectKeyFrame.Value> <Visibility>Visible</Visibility> </DiscreteObjectKeyFrame.Value> </DiscreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> and remove the trigger targeting the drop down button.
The fix will be available in the R1 2018 SP2 Release.
Dynamically adding RadPane to PaneGroup, the header of the pane does not appear on the second added pane.
To workaround this the OnApplyTemplate() method can be called after the RadPane is added to the RadPaneGroup.
Hello Support,
we are using the RadDocking.LayoutChangeEnded event to store the docking layout (via RadDocking.SaveLayout) after the user has changed it.
When animations are enabled (default) everything works as expected and all groups, split containers, and panes are included when in the XML written by RadDocking.SaveLayout.
However, when disabling animations (either using AnimationManager.IsGlobalAnimationEnabled or custom styles for RadWindow and/or ToolWindow setting AnimationManager.IsAnimationEnabled to false) the RadDocking.LayoutChangeEnded event is raised too early.
The faulty behavior can be reproduced with the attached demo application as follows:
1. start the application (App.xaml includes a style for ToolWindow with animations disabled)
2. drag the pane "Solution Explorer" out of the application to create a new tool window
3. drag the "Solution Explorer" tool window onto the "Properties" pane's compass and drop it below "Properties", so that "Properties" and "Solution Explorer" are both pinned right in the application above each other
4. when inspecting the layout written to the "Output" pane you will find that the entry for the RadPane "Solution Explorer" is missing
Any additional change to the docking layout (like resizing a pane) will update the layout and show all panes again.
When enabling animations in the ToolWindow style the above steps will result in the complete layout being written to the "Output" pane.
Please let me know should you require further information for reproduction of this bug.
Best regards,
Oliver
private
void
RadDockingOnCustomElementLoading(
object
sender, LayoutSerializationCustomLoadingEventArgs e)
{
if
(e.CustomElementTypeName ==
"MyRadPane"
)
{
e.SetAffectedElement(
new
DependencyObject());
e.Cancel =
true
;
}
}
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>
In OS two monitors are configured: monitor 1 (3840x2160) scale: 200% and monitor 2 (1920x1200) scale 100%.
Our wpf application has a main window, maximized on screen 1 and a child window maximized on screen 2.
In the app.manifest we use per monitor dpi awareness:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True/PM</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2,PerMonitor</dpiAwareness>
</windowsSettings>
</application>
Both windows have a RadDocking instance with a docked RadPane like:
<Grid>
<telerikDocking:RadDocking Name="Docking"
HasDocumentHost="True"
telerik:DragDropGroup.Name="VDDragDropGroup">
<telerikDocking:RadDocking.DocumentHost>
...
</telerikDocking:RadDocking.DocumentHost>
<telerik:RadSplitContainer InitialPosition="DockedBottom">
<telerik:RadPaneGroup>
<telerik:RadPane Header="Test Panel" IsDockable="True">
<Border Background="Green">
<TextBlock Text="Test Panel" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</telerik:RadPane>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerikDocking:RadDocking>
</Grid>
If you drag and move the docked panel from screen 2 to screen 1 the compass at screen 1 is only shown if the mouse position is in the first quadrant of screen 1 . The compass is shown on the correct place but cannot be activated, so that no dropping is possible.
Without unsing per monitor dpi awareness everything works fine. Unfortunately we must use per monitor dpi awareness for our application.
This bug is also reproducable in V2023.3.1218.
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;
}