Ejemplo n.º 1
0
        public static AnchorSide GetSide(this ILayoutElement element)
        {
            AnchorSide             anchorSide;
            ILayoutOrientableGroup parent = element.Parent as ILayoutOrientableGroup;

            if (parent != null)
            {
                if (!parent.ContainsChildOfType <LayoutDocumentPaneGroup, LayoutDocumentPane>())
                {
                    return(parent.GetSide());
                }
                using (IEnumerator <ILayoutElement> enumerator = parent.Children.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        ILayoutElement current = enumerator.Current;
                        if (current == element || current.Descendents().Contains(element))
                        {
                            anchorSide = (parent.Orientation == Orientation.Horizontal ? AnchorSide.Left : AnchorSide.Top);
                            return(anchorSide);
                        }
                        else
                        {
                            ILayoutContainer layoutContainer = current as ILayoutContainer;
                            if (layoutContainer == null || !layoutContainer.IsOfType <LayoutDocumentPane, LayoutDocumentPaneGroup>() && !layoutContainer.ContainsChildOfType <LayoutDocumentPane, LayoutDocumentPaneGroup>())
                            {
                                continue;
                            }
                            anchorSide = (parent.Orientation == Orientation.Horizontal ? AnchorSide.Right : AnchorSide.Bottom);
                            return(anchorSide);
                        }
                    }
                    return(AnchorSide.Right);
                }
                return(anchorSide);
            }
            return(AnchorSide.Right);
        }