/// <summary>
        /// See <see cref="MarkupExtension.ProvideValue" />
        /// </summary>
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            var binding = new Binding("Value")
            {
                Source = TranslationData.GetTranslationData(_key, _args)
            };

            return(binding.ProvideValue(serviceProvider));
        }
 public static TranslationData GetTranslationData(MultistringTag key, string args = "")
 {
     lock (_locker)
     {
         if (key == null || string.IsNullOrWhiteSpace(key.Value))
         {
             return(new TranslationData(key, args));
         }
         else if (!Cache.ContainsKey(key.Value + args))
         {
             var translationDate = new TranslationData(key, args);
             Cache.Add(key.Value + args, translationDate);
             return(translationDate);
         }
         return(Cache[key.Value + args]);
     }
 }