public override object ProvideValue(IServiceProvider serviceProvider) { IProvideValueTarget provideValue = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget; if (provideValue == null) { return(this); } DependencyObject target = provideValue.TargetObject as DependencyObject; DependencyProperty property = provideValue.TargetProperty as DependencyProperty; // If not dependency object or dependency property, return this instance if (target == null || property == null) { return(this); } if (!ElementStateOperations.HasPropertyValue(target, property)) { object defaultValue = PropertyValueConverter.ConvertFromString(target.GetType(), property, Default); ElementStateOperations.AddPropertyValue(target, property, defaultValue); } BindingBase binding = ElementStateOperations.CreateBinding(target, property); object startValue = binding.ProvideValue(serviceProvider); return(startValue); }
public override object ProvideValue(IServiceProvider serviceProvider) { IProvideValueTarget service = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget; if (service == null) { return(null); } FrameworkElement mTarget = service.TargetObject as FrameworkElement; DependencyProperty mProperty = service.TargetProperty as DependencyProperty; if (mTarget != null && mProperty != null) { var mDescriptor = DependencyPropertyDescriptor.FromProperty(mProperty, typeof(UIElement)); mDescriptor.AddValueChanged(mTarget, VisibilityChanged); RoutedEventHandler handler = null; handler = (s, e) => { mDescriptor.RemoveValueChanged(mTarget, VisibilityChanged); mTarget.Unloaded -= handler; }; mTarget.Unloaded += handler; if (_binding != null) { return(_binding.ProvideValue(serviceProvider));// BindingOperations.SetBinding(mTarget, mProperty, _Binding); } } return(Visibility.Visible); }