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; bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; cdp.Refresh(); ComposingConverter conv = new ComposingConverter(); if (checkBox1.Checked) { RangeConverter rc = new RangeConverter(); rc.Min = Decimal.ToDouble(minEdit.Value); rc.Max = Decimal.ToDouble(maxEdit.Value); conv.Converters.Add(rc); } conv.Converters.Add(new Kent.Boogaart.Converters.TypeConverter(cdp.Channel.Type, Property.PropertyType)); 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); ComposingConverter conv = bind.Converter as ComposingConverter; foreach (IValueConverter converter in conv.Converters) { if (converter is RangeConverter) { checkBox1.Checked = true; RangeConverter rc = converter as RangeConverter; minEdit.Value = (Decimal)rc.Min; maxEdit.Value = (Decimal)rc.Max; } } } }