/// <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); }