示例#1
0
        private void InitializeSelector()
        {
            this.AddSelectedHandler(OnSelected);
            this.AddUnselectedHandler(OnUnselected);

            if (!DesignTime.IsLocked(this))
            {
                GroupSelector.Select(this, true);
            }
        }
示例#2
0
        public void Select()
        {
            // Design Mode Change
            if (GroupSelector.IsSelected(this))
            {
                InvertDesignMode();
            }

            // Select
            GroupSelector.Select(this, true,
                                 multiSelect: Keyboard.IsKeyDown(Key.LeftShift));
        }
示例#3
0
        /// <summary>
        /// Parent의 자식으로 등록된 Element를 삭제하고 <see cref="IRenderer"/> 및 레이어를 삭제합니다.
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="element"></param>
        public void RemoveElement(FrameworkElement parent, FrameworkElement element, bool pushTask = false)
        {
            IRenderer parentRenderer = parent.GetRenderer();
            IRenderer childRenderer  = element.GetRenderer();

            // Selection Check
            if (GroupSelector.IsSelected(childRenderer as FrameworkElement))
            {
                GroupSelector.Select(childRenderer as SelectionLayer, false);
            }

            // Remove On AdornerLayer
            element.RemoveAdorner((Adorner)childRenderer);

            if (!pushTask)
            {
                // Dispose
                DestroyElement(parent, element);
            }

            if (parent.DataContext != null && parent.DataContext is DependencyObject dataContext)
            {
                // Remove On PObject Parent
                ObjectContentHelper.GetContent(
                    dataContext,
                    pi => pi.SetValue(dataContext, null),          // Single Content
                    list => list.SafeRemove(element.DataContext)); // List Content
            }

            // Remove On WPF Parent
            ObjectContentHelper.GetContent(
                parent,
                pi => pi.SetValue(parent, null),     // Single Content
                list => list.SafeRemove(element));   // List Content

            RemoveElementCore(childRenderer);

            // Notice child removed
            parentRenderer?.RemoveChild(childRenderer);
        }
示例#4
0
        private void ESC_Execute(object sender, ExecutedRoutedEventArgs e)
        {
            // Component Box
            if (IsComponentBoxOpen)
            {
                CloseComponentBox();
                return;
            }

            // Selected Group
            if (GroupSelector.GetSelectedItemCount() > 1)
            {
                GroupSelector.UnselectAll();
                return;
            }

            // Selected Item
            var layer = GetSelectedLayer();

            if (layer == null)
            {
                GroupSelector.UnselectAll();
                return;
            }

            var prevLayer = layer.AdornedElement
                            .FindVisualParents <FrameworkElement>()
                            .Select(element => (StoryboardLayer)element.GetRenderer())
                            .Skip(1)
                            .FirstOrDefault(adorner => adorner != null && adorner is SelectionLayer);

            if (prevLayer != null)
            {
                GroupSelector.Select(prevLayer, true);
            }
            else
            {
                GroupSelector.UnselectAll();
            }
        }