/// <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); } } } } } }
/* * void DesignerItem_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e) * { * e.Handled = true; * }*/ /// <summary> /// Update selection. /// </summary> /// <param name="e"></param> protected override void OnPreviewMouseDown(MouseButtonEventArgs e) { base.OnPreviewMouseDown(e); if (DesignerHelper.GetDesignerItem((DependencyObject)e.MouseDevice.DirectlyOver) == this) { UpdateSelection(true); if (!this.IsFocused) { this.Focus(); } e.Handled = false; } }