Пример #1
0
        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);
        }
Пример #2
0
        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);
        }