public override System.Windows.Data.BindingBase Save()
        {
            if (channel != null)
            {
                System.Windows.Data.Binding bind = new System.Windows.Data.Binding("Value");
                ChannelDataProvider         cdp  = new ChannelDataProvider();
                cdp.ChannelName = channel.PluginId + "." + channel.Name;
                bind.Source     = cdp;
                cdp.Refresh();

                SolidBrushConverter conv = new SolidBrushConverter();
                conv.MinValue   = Decimal.ToDouble(minEdit.Value);
                conv.MaxValue   = Decimal.ToDouble(maxEdit.Value);
                conv.StartColor = System.Windows.Media.Color.FromArgb(
                    startColorButton.BackColor.A,
                    startColorButton.BackColor.R,
                    startColorButton.BackColor.G,
                    startColorButton.BackColor.B);
                conv.EndColor = System.Windows.Media.Color.FromArgb(
                    endColorButton.BackColor.A,
                    endColorButton.BackColor.R,
                    endColorButton.BackColor.G,
                    endColorButton.BackColor.B);

                bind.Converter = conv;

                bind.Mode = BindingMode.TwoWay;


                DependencyObject   depObj;
                DependencyProperty depProp;
                if (Property.GetWpfObjects(out depObj, out depProp))
                {
                    bind.FallbackValue = depObj.GetValue(depProp);
                }

                return(bind);
            }
            else
            {
                return(base.Save());
            }
        }
        public override void Initialize(object element, PropertyWrapper property, System.Windows.Data.BindingBase binding)
        {
            base.Initialize(element, property, binding);

            System.Windows.Data.Binding bind = binding as System.Windows.Data.Binding;
            if (bind != null)
            {
                ChannelDataProvider cdp = (ChannelDataProvider)bind.Source;
                AddChannel(cdp.Channel);
                SolidBrushConverter sbc = bind.Converter as SolidBrushConverter;
                minEdit.Value = (Decimal)sbc.MinValue;
                maxEdit.Value = (Decimal)sbc.MaxValue;
                startColorButton.BackColor = Color.FromArgb(
                    sbc.StartColor.A,
                    sbc.StartColor.R,
                    sbc.StartColor.G,
                    sbc.StartColor.B);
                endColorButton.BackColor = Color.FromArgb(
                    sbc.EndColor.A,
                    sbc.EndColor.R,
                    sbc.EndColor.G,
                    sbc.EndColor.B);
            }
        }