private void InitializeSelector() { this.AddSelectedHandler(OnSelected); this.AddUnselectedHandler(OnUnselected); if (!DesignTime.IsLocked(this)) { GroupSelector.Select(this, true); } }
public void Select() { // Design Mode Change if (GroupSelector.IsSelected(this)) { InvertDesignMode(); } // Select GroupSelector.Select(this, true, multiSelect: Keyboard.IsKeyDown(Key.LeftShift)); }
/// <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); }
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(); } }