private static void OnColorChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            ColorPickerUserControl colorPicker = (ColorPickerUserControl)sender;

            colorPicker.Color = (Color)e.NewValue;

            colorPicker.Red   = ((Color)e.NewValue).R;
            colorPicker.Green = ((Color)e.NewValue).G;
            colorPicker.Blue  = ((Color)e.NewValue).B;

            RoutedPropertyChangedEventArgs <Color> arg =
                new RoutedPropertyChangedEventArgs <Color>((Color)e.OldValue, colorPicker.Color);

            arg.RoutedEvent = ColorChangedEvent;

            previousColor = (Color?)e.OldValue ?? null;

            colorPicker.RaiseEvent(arg);
        }
        private static void OnColorRGBChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            ColorPickerUserControl colorPicker = (ColorPickerUserControl)sender;
            Color color = colorPicker.Color;

            if (e.Property == RedProperty)
            {
                color.R = (byte)e.NewValue;
            }
            if (e.Property == BlueProperty)
            {
                color.B = (byte)e.NewValue;
            }
            if (e.Property == GreenProperty)
            {
                color.G = (byte)e.NewValue;
            }

            colorPicker.Color = color;
        }