Пример #1
0
 protected override void OnBeginDrag()
 {
     if (this.DraggedElements.Count > MoveStrategy.GetMaxChildrenForElement((SceneElement)this.LayoutContainer, (IProperty)null))
     {
         throw new InvalidOperationException(ExceptionStringTable.BehaviorCannotHandleMultipleElements);
     }
     this.PrepareDraggedElementsForDragging();
 }
Пример #2
0
        private static MoveStrategy CreateForLayoutMode(MoveStrategyContext context, SceneElement hitElement)
        {
            SceneElement sceneElement = hitElement;

            while (sceneElement != null)
            {
                BaseFrameworkElement frameworkElement = sceneElement as BaseFrameworkElement;
                if (frameworkElement != null && context.RootNode.IsAncestorOf((SceneNode)frameworkElement))
                {
                    if (!MoveStrategyFactory.CanMoveInside(context, frameworkElement))
                    {
                        sceneElement = frameworkElement.ParentElement;
                        continue;
                    }
                    MoveStrategy byParentType = MoveStrategyFactory.CreateByParentType(context, frameworkElement);
                    if (byParentType != null)
                    {
                        bool flag = false;
                        ItemsControlElement   itemsControlElement   = frameworkElement.ParentElement as ItemsControlElement;
                        ContentControlElement contentControlElement = frameworkElement as ContentControlElement;
                        if (itemsControlElement != null && contentControlElement != null && (ItemsControlElement.ItemsProperty.Equals((object)itemsControlElement.GetPropertyForChild((SceneNode)frameworkElement)) && (itemsControlElement.ViewObject as IViewItemsControl).IsItemItsOwnContainer(contentControlElement.ViewObject)))
                        {
                            flag = true;
                        }
                        if (!flag)
                        {
                            IProperty contentProperty    = MoveStrategyFactory.GetContentProperty(context, (SceneNode)frameworkElement);
                            int       childrenForElement = MoveStrategy.GetMaxChildrenForElement((SceneElement)frameworkElement, contentProperty);
                            if (context.DraggedElements.Count <= childrenForElement && (childrenForElement != 1 || context.DraggedElements.Count != 1 || (!frameworkElement.IsAncestorOf((SceneNode)context.DraggedElements[0]) || context.DraggedElements[0].Parent == frameworkElement)))
                            {
                                byParentType.LayoutContainer = frameworkElement;
                                return(byParentType);
                            }
                        }
                    }
                }
                if (sceneElement != context.RootNode)
                {
                    sceneElement = sceneElement.ParentElement;
                }
                else
                {
                    break;
                }
            }
            return((MoveStrategy)null);
        }