UWP привязка к пользовательскому словарю - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть ViewModel, которая работает в UWP, все привязки работают, кроме моего пользовательского словаря, и я не знаю почему. Ничего не появляется.

Я использую FodyWeavers, отсюда сокращенная запись. Пользовательский словарь возвращает ключ с *, если ключ не найден.

В ViewModel

public static TranslationDictionary Translations { get; set; }

В представлении

 <TextBlock Text="{Binding Translations[Test_Translation]}" />

Пользовательский словарь

public class TranslationDictionary : Dictionary<string, string>
   {
       public new void Add(string key, string value)
       {
           if (value == null)
           {
               return;
           }
           base.Add(key, value);
       }

       public new void Remove(string key)
       {
           if (!ContainsKey(key))
           {
               return;
           }
           base.Remove(key);
       }

       public new string this[string key]
       {
           get
           {
               string value;
               return TryGetValue(key, out value) ? value : key + "*";
           }
           set
           {
               if (value == null)
               {
                   Remove(key);
               }
               else
               {
                   base[key] = value;
               }
           }
       }
   }

1 Ответ

0 голосов
/ 27 февраля 2020

Вы могли бы достичь этого результата, используя x: Bind вместо Binding

Обзор разницы между x: Bind & Binding здесь

И так, объявив stati c класс выглядит так:

public static class DictionariesOperations
{
    public static string GetValue(Dictionary<string, string> dict, string key)
    {
        return dict[key];
    }
}

А потом в вашем xaml:

<TextBlock Text="{x:Bind local:DictionariesOperations.GetValue(Translations, Test_Translation)}" />

Надеюсь, эта помощь =)

...