public static void SetResXContext(DependencyObject obj, ResXParamList value)
 {
     obj.SetValue(ResXContextProperty, value);
 }
        protected override object GetValue(IServiceProvider serviceProvider)
        {
            if (string.IsNullOrEmpty(Key))
            {
                throw new ArgumentException("Key cannot be null");
            }

            IProvideValueTarget targetHelper = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;

            if (!(targetHelper.TargetProperty is DependencyProperty))
            {
                return(this);
            }

            DependencyObject targetObject = targetHelper.TargetObject as DependencyObject;

            if (targetObject != null && DesignerProperties.GetIsInDesignMode(targetObject))
            {
                EnsureAppResourcesLoaded();
            }

            ResXParamList paramList = null;

            if (targetObject != null && Parameters.Count == 0)
            {
                paramList = GetResXContext(targetObject);
            }

            if (paramList == null)
            {
                paramList = Parameters;
            }

            var converter = new ResXConverter {
                KeyProvider = KeyProvider, ResXExtension = this, Parameters = paramList
            };

            Binding binding = new Binding("UICulture")
            {
                Source = CultureManager.Instance,
                Mode   = BindingMode.OneWay
            };

            if (paramList.Count == 0)
            {
                binding.Converter = converter;
                return(binding.ProvideValue(serviceProvider));
            }

            var multiBinding = new MultiBinding {
                Mode = BindingMode.OneWay, Converter = converter
            };

            foreach (var param in paramList)
            {
                multiBinding.Bindings.Add(param);
            }

            multiBinding.Bindings.Add(binding);

            return(multiBinding.ProvideValue(serviceProvider));
        }