Ejemplo n.º 1
0
        /// <summary>
        /// Returns the object that corresponds to the specified resource key.
        /// </summary>
        /// <param name="serviceProvider">An object that can provide services for the markup extension.</param>
        /// <returns>The object that corresponds to the specified resource key.</returns>
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            IProvideValueTarget service = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;

            if (service != null)
            {
                if (service.TargetProperty is DependencyProperty)
                {
                    _targetProperty = service.TargetProperty;

                    if (service.TargetObject is DependencyObject)
                    {
                        var targetObject = new WeakReference(service.TargetObject);

                        // Verify if the extension is used in a template
                        // and has been already registered

                        if (_targetObjects != null)
                        {
                            _targetObjects.Add(targetObject);
                        }
                        else
                        {
                            _targetObject = targetObject;

                            LocalizationManager.AddLocalization(this);
                        }
                    }
                    else
                    {
                        // The extension is used in a template

                        _targetObjects = new List <WeakReference>();

                        LocalizationManager.AddLocalization(this);

                        return(this);
                    }
                }
                else if (service.TargetProperty is PropertyInfo)
                {
                    _targetProperty = service.TargetProperty;

                    _targetObject = new WeakReference(service.TargetObject);

                    LocalizationManager.AddLocalization(this);
                }
            }

            return(GetValue(Key, Format));
        }
 private LocalizationInstance()
 {
     LocalizationManager.AddLocalization(this);
 }