Beispiel #1
0
        private void DeleteLayer(IRenderer renderer)
        {
            var element = renderer.Element;
            var parent  = renderer.RendererParent.Element;

            // Check Selected Parent
            if (RendererTreeHelper
                .FindParents <IRenderer>(renderer)
                .Count(r => GroupSelector.IsSelected(r as FrameworkElement)) > 0)
            {
                return;
            }

            // * Task *
            if (renderer is IRendererLayout lRenderer)
            {
                TaskManager?.Push(
                    new LayoutTaskData(
                        RendererTaskType.Remove,
                        lRenderer,
                        () => RemoveElement(parent, element, true),
                        () => AddElement(parent, element, true),
                        () => RemoveElement(parent, element)));
            }
            else if (renderer is IRendererElement eRenderer)
            {
                TaskManager?.Push(
                    new ElementTaskData(
                        RendererTaskType.Remove,
                        eRenderer,
                        () => RemoveElement(parent, element, true),
                        () => AddElement(parent, element, true),
                        () => RemoveElement(parent, element)));
            }
        }
Beispiel #2
0
        private void MoveThumb_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            Keyboard.Focus(Storyboard);

            if (!GroupSelector.IsSelected(this))
            {
                cancelNextInvert = true;
                Select();
            }
        }
Beispiel #3
0
        public void Select()
        {
            // Design Mode Change
            if (GroupSelector.IsSelected(this))
            {
                InvertDesignMode();
            }

            // Select
            GroupSelector.Select(this, true,
                                 multiSelect: Keyboard.IsKeyDown(Key.LeftShift));
        }
Beispiel #4
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);
        }