private void GetPreviewSplitterPanel(out SplitterPanel panel, out int targetIndex, DockDirection dockDirection, ViewElement viewElement, FrameworkElement adornedElement, Orientation orientation) { targetIndex = -1; panel = Microsoft.VisualStudio.PlatformUI.ExtensionMethods.FindAncestor <SplitterPanel>((Visual)adornedElement); if (panel != null) { SplitterItem ancestor = Microsoft.VisualStudio.PlatformUI.ExtensionMethods.FindAncestor <SplitterItem>((Visual)adornedElement); targetIndex = SplitterPanel.GetIndex((UIElement)ancestor); } MainSite mainSite = viewElement as MainSite; if (mainSite == null) { return; } DockGroup dockGroup = mainSite.Child as DockGroup; if (dockGroup == null || dockGroup.Orientation != orientation) { return; } panel = (SplitterPanel)null; DependencyObject reference = (DependencyObject)adornedElement; while (panel == null && reference != null) { reference = VisualTreeHelper.GetChild(reference, 0); panel = reference as SplitterPanel; } if (panel == null) { return; } if (dockDirection == DockDirection.Left || dockDirection == DockDirection.FirstValue) { targetIndex = 0; } else { targetIndex = panel.Children.Count - 1; } }