static void BrushChangedInternal(DependencyObject property, DependencyPropertyChangedEventArgs args) { ColorBox c = property as ColorBox; Brush brush = args.NewValue as Brush; if (!c._BrushSetInternally) { c._BrushTypeSetInternally = true; if (brush == null) { c.BrushType = BrushTypes.Solid; c.Color = Color.FromArgb(255, 255, 0, 0); } else if (brush is SolidColorBrush) { c.BrushType = BrushTypes.Solid; c.Color = (brush as SolidColorBrush).Color; } else if (brush is LinearGradientBrush) { LinearGradientBrush lgb = brush as LinearGradientBrush; //c.Opacity = lgb.Opacity; c.StartX = lgb.StartPoint.X; c.StartY = lgb.StartPoint.Y; c.EndX = lgb.EndPoint.X; c.EndY = lgb.EndPoint.Y; c.MappingMode = lgb.MappingMode; c.SpreadMethod = lgb.SpreadMethod; c.Gradients = new ObservableCollection <GradientStop>(lgb.GradientStops); c.BrushType = BrushTypes.Linear; //c.Color = lgb.GradientStops.OrderBy(x => x.Offset).Last().Color; //c.SelectedGradient = lgb.GradientStops.OrderBy(x => x.Offset).Last(); } else { /* * c.BrushType = BrushTypes.Solid; * c.Color = Color.FromArgb(255, 255, 0, 0); */ RadialGradientBrush rgb = brush as RadialGradientBrush; c.GradientOriginX = rgb.GradientOrigin.X; c.GradientOriginY = rgb.GradientOrigin.Y; c.RadiusX = rgb.RadiusX; c.RadiusY = rgb.RadiusY; c.CenterX = rgb.Center.X; c.CenterY = rgb.Center.Y; c.MappingMode = rgb.MappingMode; c.SpreadMethod = rgb.SpreadMethod; c.Gradients = new ObservableCollection <GradientStop>(rgb.GradientStops); c.BrushType = BrushTypes.Radial; //c.Color = rgb.GradientStops.OrderBy(x => x.Offset).Last().Color; //c.SelectedGradient = rgb.GradientStops.OrderBy(x => x.Offset).Last(); } c._BrushTypeSetInternally = false; } else { c.RaiseBrushChangedEvent((Brush)args.NewValue); } }
static void BrushChanged(DependencyObject property, DependencyPropertyChangedEventArgs args) { ColorBox c = property as ColorBox; Brush brush = args.NewValue as Brush; if (!c._BrushSetInternally) { c._BrushTypeSetInternally = true; if (brush == null) { c.BrushType = BrushTypes.None; } else if (brush is SolidColorBrush) { var sbrush = (SolidColorBrush)brush; var fbrush = _wpfBrushTypes.FirstOrDefault(x => ((SolidColorBrush)x.Brush).Color == sbrush.Color); if (fbrush != null) { c.BrushType = BrushTypes.Predefined; } else { c.BrushType = BrushTypes.Solid; } c.Color = (brush as SolidColorBrush).Color; } else if (brush is LinearGradientBrush) { LinearGradientBrush lgb = brush as LinearGradientBrush; //c.Opacity = lgb.Opacity; c.StartX = lgb.StartPoint.X; c.StartY = lgb.StartPoint.Y; c.EndX = lgb.EndPoint.X; c.EndY = lgb.EndPoint.Y; c.MappingMode = lgb.MappingMode; c.SpreadMethod = lgb.SpreadMethod; c.Gradients = new ObservableCollection <GradientStop>(lgb.GradientStops); c.BrushType = BrushTypes.Linear; //c.Color = lgb.GradientStops.OrderBy(x => x.Offset).Last().Color; //c.SelectedGradient = lgb.GradientStops.OrderBy(x => x.Offset).Last(); } else { RadialGradientBrush rgb = brush as RadialGradientBrush; c.GradientOriginX = rgb.GradientOrigin.X; c.GradientOriginY = rgb.GradientOrigin.Y; c.RadiusX = rgb.RadiusX; c.RadiusY = rgb.RadiusY; c.CenterX = rgb.Center.X; c.CenterY = rgb.Center.Y; c.MappingMode = rgb.MappingMode; c.SpreadMethod = rgb.SpreadMethod; c.Gradients = new ObservableCollection <GradientStop>(rgb.GradientStops); c.BrushType = BrushTypes.Radial; //c.Color = rgb.GradientStops.OrderBy(x => x.Offset).Last().Color; //c.SelectedGradient = rgb.GradientStops.OrderBy(x => x.Offset).Last(); } c._BrushTypeSetInternally = false; } }