protected override void OnPreviewMouseDown(MouseButtonEventArgs e) { base.OnPreviewMouseDown(e); DesignerCanvas designer = VisualTreeHelper.GetParent(this) as DesignerCanvas; // update selection if (designer != null) { if ((Keyboard.Modifiers & (ModifierKeys.Shift | ModifierKeys.Control)) != ModifierKeys.None) { if (this.IsSelected) { designer.SelectionService.RemoveFromSelection(this); } else { designer.SelectionService.AddToSelection(this); } } else if (!this.IsSelected) { designer.SelectionService.SelectItem(this); //if (!string.IsNullOrEmpty(this.RealatedPorpertyCardName)) //{ this.RealatedPorpertyCardName = "PropertyGridCard"; PropertyGridControl card = designer.FindName(this.RealatedPorpertyCardName) as PropertyGridControl; if (card != null) { var count = VisualTreeHelper.GetChildrenCount(this); for (int i = 0; i <= count - 1; i++) { var child = VisualTreeHelper.GetChild(this, i); var length = VisualTreeHelper.GetChildrenCount(child); for (int j = 0; j < length; j++) { var aa = VisualTreeHelper.GetChild(child, j) as ContentPresenter; if (aa != null) { card.SelectedObject = aa.Content; } } } } } Focus(); } e.Handled = false; }