/// <summary> /// Updates the selection for this item. /// </summary> /// <param name="bSelect">True if this item should be selected; false otherwise.</param> protected virtual void UpdateSelection(bool bSelect) { DesignerCanvas designer = DesignerHelper.GetDesignerCanvas(this) as DesignerCanvas; // update selection if (designer != null) { if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None) { if (bSelect && this.IsSelected) { designer.SelectionService.RemoveFromSelection(this); } else if (!this.IsSelected) { designer.SelectionService.AddToSelection(this); } } else if (!this.IsSelected && bSelect) { designer.SelectionService.SelectItem(this); } else if (this.IsSelected && !bSelect) { designer.SelectionService.RemoveFromSelection(this); } } }
private static void IsSelectedPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) { DesignerItem item = obj as DesignerItem; if (item.DataContext != null) { if (item != null) { DesignerCanvas designer = DesignerHelper.GetDesignerCanvas(item) as DesignerCanvas; if (designer != null) { if ((bool)args.NewValue) { //if (!designer.SelectionService.CurrentSelection.Contains(item)) if (!designer.SelectionService.ContainsInSelection(item)) { designer.SelectionService.AddToSelection(item, false); } item.BringIntoView(); } else { //if (designer.SelectionService.CurrentSelection.Contains(item)) if (designer.SelectionService.ContainsInSelection(item)) { designer.SelectionService.RemoveFromSelection(item, false); } } } } } }