コード例 #1
0
        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;
            }
        }