protected override void OnMouseUp(MouseButtonEventArgs e) { var pnode = this.DataContext as PropertyNode; var colorEditorPopup = new ColorEditorPopup(); colorEditorPopup.PlacementTarget = this; colorEditorPopup.IsOpen = true; colorEditorPopup.solidBrushEditor.Color = (Color)pnode.Value; colorEditorPopup.Closed += ColorEditorPopup_Closed; DependencyPropertyDescriptor.FromProperty(SolidBrushEditor.ColorProperty, typeof(SolidBrushEditor)) .AddValueChanged(colorEditorPopup.solidBrushEditor, (s, ee) => { if (_changeGroup == null) { _changeGroup = pnode.Context.OpenGroup("change color", pnode.Properties.Select(p => p.DesignItem).ToArray()); } pnode.Value = colorEditorPopup.solidBrushEditor.Color; }); }