This question is locked. New answers and comments are not allowed.
I have my RadDocking inside a RadWindow. Whenever a pane opens, it obviously either overlays or compresses the space of the document host. However, I'd prefer the document host to remain fully visible while the pane is visible. The way I tried to achieve that is to increase the RadWindow size (by the size of the RadPane) whenever the RadPane opens. The overall effect would then be that of a pane that opens "to the outside" rather than "to the inside".
I have replaced the ClickFlyoutBehaviour with my own version that first changes the window size and only then does StartOpenAnimation(). The problem I am getting is that the change of the RadWindow is done ok but then the pane is not shown at all.
Any ideas how the "open to the outside" effect can be achieved? Thanks!
My Behavior:
I have replaced the ClickFlyoutBehaviour with my own version that first changes the window size and only then does StartOpenAnimation(). The problem I am getting is that the change of the RadWindow is done ok but then the pane is not shown at all.
Any ideas how the "open to the outside" effect can be achieved? Thanks!
My Behavior:
public class SPFlyoutBehavior : IFlyoutBehavior { void IFlyoutBehavior.OnMouseEnter(IFlyoutHost host, RadPane targetPane) { } void IFlyoutBehavior.OnMouseLeave(IFlyoutHost host) { } void IFlyoutBehavior.OnOpeningTimerTimeout(IFlyoutHost host) { } void IFlyoutBehavior.OnClosingTimerTimeout(IFlyoutHost host) { } void IFlyoutBehavior.OnPaneActivated(IFlyoutHost host, RadPane targetPane) { host.SetSelectedPane(targetPane); if (host.CurrentState == FlyoutState.Closed) { host.StartOpenAnimation(); } } void IFlyoutBehavior.OnPaneDeactivated(IFlyoutHost host, RadPane targetPane) { var selectedPane = host.SelectedPane; if (selectedPane != null && !selectedPane.IsActive && host.CurrentState == FlyoutState.Opened) { host.StartCloseAnimation(); } } private IFlyoutHost _host; void IFlyoutBehavior.OnPaneMouseLeftButtonDown(IFlyoutHost host, RadPane targetPane) { // get the RadWindow that we are sitting in var radWindow = targetPane.ParentOfType<RadWindow>(); if (radWindow == null) return; _host = host; // wire up the size changed handler radWindow.SizeChanged += radWindow_SizeChanged; // change the size of the window radWindow.Width += targetPane.AutoHideWidth; } void radWindow_SizeChanged(object sender, SizeChangedEventArgs e) { if (_host == null) return; if (_host.CurrentState != FlyoutState.Opened) { // now that the window size has been changed, show the RadPane (too bad we don't get a AnimationFinished() event _host.StartOpenAnimation(); } else { //corresponding "re-shrink window" logic not yet implemented _host.StartCloseAnimation(); } } }