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