Completed
Last Updated: 21 Oct 2019 10:53 by ADMIN
Release R3 2019 SP1

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

Completed
Last Updated: 04 Oct 2019 10:28 by ADMIN
Release LIB 2019.3.1007
The CustomElementLoading event can't be canceled without creating a new instance of the custom element.

As a workaround in the CustomElementLoading event handler you can call the SetAffectedElement() with creating DependencyObject and then Cancel the event by setting the Cancel property.
private void RadDockingOnCustomElementLoading(object sender, LayoutSerializationCustomLoadingEventArgs e)
{
    if (e.CustomElementTypeName == "MyRadPane")
    {
        e.SetAffectedElement(new DependencyObject());
        e.Cancel = true;              
    }
}
Completed
Last Updated: 03 Jun 2019 06:26 by ADMIN
Release LIB 2019.2.603 (06/03/2019)
When the IsHidden property of a RadPane within a ToolWindow is set to True and then to false in quick succession, the ToolWindow is not shown. 

As a workaround, you can disable the animation of the ToolWindow:
<Style TargetType="telerik:ToolWindow">
<Setter Property="telerik:AnimationManager.IsAnimationEnabled" Value="False" />
</Style>

The above style need to be placed in the resources of the App.xaml in order to take effect on the ToolWindows, since they are displayed in a separated visual tree.
Unplanned
Last Updated: 07 May 2019 10:20 by ADMIN
Possible work-around of this problem:

private void RadDocking_ElementLoaded ( object sender, LayoutSerializationEventArgs e )
 {
     if ( e.AffectedElement is RadPaneGroup )
     {
         var PaneGroup = e.AffectedElement as RadPaneGroup;
         var Panes = PaneGroup.EnumeratePanes().ToList();
         var SelectedIndex = PaneGroup.SelectedIndex;

         for ( int Index = 0; Index < Panes.Count; Index++ )
         {
             if ( ( Panes[ Index ].IsHidden || !Panes[ Index ].IsPinned ) && Index <= SelectedIndex )
             {
                 SelectedIndex++;
             }
         }

         PaneGroup.SelectedIndex = SelectedIndex;
     }
 }
Completed
Last Updated: 19 Apr 2019 14:05 by ADMIN
Release LIB 2019.1.422 (04/22/2019)
The exception is reproduced when multiple toolwindows with nested owners are floated and they are reloaded by re-merging the dictionaries in App.xaml in a NoXaml scenario.
Completed
Last Updated: 19 Apr 2019 12:58 by ADMIN
Release LIB 2019.1.422 (04/22/2019)

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.

Completed
Last Updated: 16 Apr 2019 08:16 by ADMIN
Release LIB 2019.1.422 (04/22/2019)
Declined
Last Updated: 22 Mar 2019 12:48 by ADMIN
Created by: Marco
Comments: 2
Category: Docking
Type: Feature Request
1

Having Problems with unreadable Tabs in RadPaneGroup: TabsSqueeze.png

I think I found a Solution with OverflowMode and ScrollViewer:

<telerik:RadPaneGroup x:Name="DocumentGroup" ScrollViewer.HorizontalScrollBarVisibility="Auto" OverflowMode="Scroll">

Problem:

After Loading Layout the OverflowMode is not respected anymore.

I found this ticket in Silverlight, what discribes the Problem and is approved: Docking: I would like OverflowMode to work for all RadPaneGroup in xaml/codebehind and this be persisted through SaveLayout/LoadLayout

And i found this documentation, which say, using OverflowMode can lead to unexpected behaviors:
https://docs.telerik.com/devtools/wpf/controls/raddocking/general-information/not-supported-properties

so i report this as a feature instead of a bug.

Please sea atteched an example project: TabWrapProblem.zip
Usage: Save and than Load the Layout -> Scrolling of tabs break

Unplanned
Last Updated: 15 Mar 2019 17:39 by ADMIN
Unplanned
Last Updated: 15 Mar 2019 17:39 by ADMIN
Unplanned
Last Updated: 15 Mar 2019 17:39 by ADMIN
Just like in Visual Studio, a floating pane, which I want to dock (for example to the bottom), can either take the whole width or just the width that is left.

For example:
At start, the panes in the bottom does not consume the whole window width. After undocking the panes and docking them back, the compass only shows me an option to dock the panes while consuming the whole width.

I have no option to return to the original state (like in Start.png). The only way to return to that state is undock and re-dock the right pane, and then dock and re-dock the left pane.

Visual Studio has this feature (see image).
Unplanned
Last Updated: 15 Mar 2019 17:39 by ADMIN
Provide an easy functionality to exclude a pane or group of panes from reordering when AllowDragReorder is set to True.
Unplanned
Last Updated: 15 Mar 2019 17:39 by ADMIN
Unplanned
Last Updated: 15 Mar 2019 17:39 by ADMIN
Expose information about the used Compass when docking a Pane.
Completed
Last Updated: 08 Feb 2019 12:40 by ADMIN
When the RadDocking Items are reordered during runtime and new RadSplitContainers/RadPaneGroups are generated, the save/load behavior is sometimes incorrect. 
Completed
Last Updated: 07 Feb 2019 16:13 by ADMIN
ADMIN
Created by: Telerik Admin
Comments: 1
Category: Docking
Type: Bug Report
4
When the Dock's auto-hide area is is about to be shown on two monitors simultaneously it is shown only on one of the monitors.
Declined
Last Updated: 25 Jan 2019 17:33 by ADMIN

After upgrading to Telerik WPF 2019.1.116 from 2018.3.1010 we receive a lot of:

System.ComponentModel.Win32Exception (0x80004005): Invalid window handle
   MS.Win32.UnsafeNativeMethods.GetWindowText(HandleRef hWnd, StringBuilder lpString, Int32 nMaxCount)

Exceptions. It makes out application very slow.

In version 2018 everyting was OK. See attached scerenshots.

Unplanned
Last Updated: 28 Dec 2018 08:39 by ADMIN
The RadDocking control template hosts several AutoHideArea elements, one for each auto-hide placement - left, top, right, bottom. When you unpin a RadPane, it goes into one of those areas. The active auto-hide area where the pane will go is determined by the State of the topmost RadSplitContainer.

Allow manually setting the auto-hide area where the RadPane will go when unpinned.
Completed
Last Updated: 11 Dec 2018 15:35 by ADMIN
The close button in the document host is not higlighted (hovered-button-state-doc-host.png) as opposed to panes outside the DocumentHost area (hovered-button-state.png).

The workaround is to update the MouseOver visual state of the RadButtonDocumentCloseControlTemplate:

             <ControlTemplate x:Key="RadButtonDocumentCloseControlTemplate" TargetType="telerik:RadButton">
                <Grid x:Name="LayoutRoot" Background="Transparent" Width="18" Height="18">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <DoubleAnimation Duration="0:0:0" To="0.3" Storyboard.TargetName="PathVisual" Storyboard.TargetProperty="Opacity"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Normal"/>
                            <VisualState x:Name="MouseOver">
                                <Storyboard>
                                    <DoubleAnimation Duration="0:0:0" To="1" Storyboard.TargetName="MouseOverVisual" Storyboard.TargetProperty="Opacity"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Pressed"/>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Border x:Name="MouseOverVisual" Background="{telerik:Office2013Resource ResourceKey=EffectHighBrush}" Opacity="0"/>
                    <Path x:Name="PathVisual"
                    Width="8"
                    Height="8"
                    Data="M2.5,0 L4.5,0 4.5,2.5 7,2.5 7,4.5 4.5,4.5 4.5,7 2.5,7 2.5,4.5 0,4.5 0,2.5 2.5,2.5 z"
                    Stretch="Fill"
                    Fill="{TemplateBinding Background}"
                    RenderTransformOrigin="0.5,0.5"
                    SnapsToDevicePixels="True">
                        <Path.RenderTransform>
                            <RotateTransform Angle="-135"/>
                        </Path.RenderTransform>
                    </Path>
                </Grid>
            </ControlTemplate>
            <Style x:Key="CustomRadButtonDocumentCloseStyle" BasedOn="{StaticResource RadButtonDocumentCloseStyle}" TargetType="telerik:RadButton">
                <Setter Property="Template" Value="{StaticResource RadButtonDocumentCloseControlTemplate}"/>
            </Style>
            <ControlTemplate x:Key="RadPaneGroupDocumentHostControlTemplate" TargetType="telerik:RadPaneGroup">
                <Grid>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Disabled"/>
                            <VisualState x:Name="Normal"/>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="FocusStates">
                            <VisualState x:Name="Focused"/>
                            <VisualState x:Name="Unfocused"/>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="AutoCollapseStates">
                            <VisualState x:Name="SingleItem"/>
                            <VisualState x:Name="TwoOrMoreItems"/>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="PaneHeaderVisibilityStates">
                            <VisualState x:Name="PaneHeaderHidden"/>
                            <VisualState x:Name="PaneHeaderVisible"/>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="ResizerStates">
                            <VisualState x:Name="ResizerLeft">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Visibility" Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Visible</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="(Grid.RowSpan)" Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <sys:Int32>3</sys:Int32>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Placement" Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Dock>Left</Dock>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimation BeginTime="00:00:00" From="4" To="4" Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="MinWidth"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="ResizerTop">
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Visibility" Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Visible</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="(Grid.ColumnSpan)" Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <sys:Int32>2</sys:Int32>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Placement" Duration="0">
                                        <DiscreteObjectKeyFrame KeyTime="0">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Dock>Top</Dock>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                    <DoubleAnimation BeginTime="00:00:00" From="4" To="4" Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="MinHeight"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="HideResizer"/>
                        </VisualStateGroup>
                        <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>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <dock:RadGridResizer x:Name="DockResizer" Placement="Left" ShowsPreview="True" Visibility="Collapsed"/>
                    <Grid x:Name="ItemsContainer" Grid.Row="1" Grid.Column="1">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <RepeatButton x:Name="LeftScrollButtonElement" Visibility="{Binding ComputedHorizontalScrollBarVisibility, ElementName=ScrollViewerElement}" Style="{StaticResource RepeatButtonScrollLeftStyle}"/>
                        <ScrollViewer x:Name="ScrollViewerElement" Grid.Column="1" HorizontalScrollBarVisibility="{Binding (ScrollViewer.HorizontalScrollBarVisibility), RelativeSource={RelativeSource TemplatedParent}}">
                            <ScrollViewer.Template>
                                <ControlTemplate TargetType="ScrollViewer">
                                    <ScrollContentPresenter x:Name="ScrollContentPresenter"/>
                                </ControlTemplate>
                            </ScrollViewer.Template>
                            <ItemsPresenter x:Name="ItemsPresenterElement"/>
                        </ScrollViewer>
                        <RepeatButton x:Name="RightScrollButtonElement"
                        Grid.Column="2"
                        Visibility="{Binding ComputedHorizontalScrollBarVisibility, ElementName=ScrollViewerElement}"
                        Style="{StaticResource RepeatButtonScrollRightStyle}"/>
                        <telerik:RadDropDownButton x:Name="DropDownButtonElement"
                        Grid.Column="3"
                        Visibility="Collapsed"
                        IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                        DropDownPlacement="Bottom"
                        DropDownButtonPosition="Left"
                        Style="{StaticResource DropDownButtonDocumentDropDownStyle}"
                        Focusable="False">
                            <telerik:RadDropDownButton.DropDownContent>
                                <telerikTabControl:DropDownMenu x:Name="DropDownMenuElement"
                                StaysOpen="False"
                                IconColumnWidth="0"
                                Placement="Bottom"
                                ItemTemplate="{TemplateBinding ItemDropDownContentTemplate}"
                                ItemTemplateSelector="{TemplateBinding ItemDropDownContentTemplateSelector}"
                                DisplayMemberPath="{TemplateBinding DropDownDisplayMemberPath}"/>
                            </telerik:RadDropDownButton.DropDownContent>
                        </telerik:RadDropDownButton>
                        <telerik:RadButton x:Name="CloseButton"
                        Grid.Column="4"
                        Command="telerik:RadDockingCommands.Close"
                        Style="{StaticResource CustomRadButtonDocumentCloseStyle}"
                        Visibility="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource BooleanToVisibilityConverter}}"/>
                    </Grid>
                    <Grid Grid.Row="2" Grid.Column="1" Background="{TemplateBinding Background}" Margin="0 -1 0 0">
                        <Rectangle StrokeThickness="1" Stroke="{telerik:Office2013Resource ResourceKey=HighDarkBrush}"/>
                        <Rectangle Stroke="{telerik:Office2013Resource ResourceKey=AccentBrush}" StrokeThickness="1" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedPane.IsActive, Converter={StaticResource BooleanToVisibilityConverter}}"/>
                        <Rectangle Margin="1" StrokeThickness="3" Stroke="{telerik:Office2013Resource ResourceKey=AccentBrush}" Opacity="0.3"/>
                        <Grid Margin="5">
                            <ContentPresenter x:Name="ContentElement"
                            Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsContentPreserved, Converter={StaticResource InvertedBooleanToVisibilityConverter}}"
                            ContentTemplate="{TemplateBinding SelectedContentTemplate}"
                            ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"/>
                            <Grid x:Name="ContentElementsPanel" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsContentPreserved, Converter={StaticResource BooleanToVisibilityConverter}}"/>
                        </Grid>
                    </Grid>
                </Grid>
            </ControlTemplate>
            <Style BasedOn="{StaticResource RadPaneGroupStyle}" TargetType="telerik:RadPaneGroup">
                <Setter Property="DocumentHostTemplate" Value="{StaticResource RadPaneGroupDocumentHostControlTemplate}"/>
            </Style>



The fix for this issue will be available in the next LIB version (2018.3.1022) expected on Monday, October 22.