Вопрос

У меня есть это приложение, которое имеет динамическое переключение языка встроенным. На основании выбранной культуры строки на протяжении всего приложения изменится. Переведенные строки и их исходные значения выходят из файлов ресурсов. Я использую привязки для прикрепления значений ресурсов к кнопкам, этикеткам и т. Д. Большая часть этого связывания происходит в коде позади.

Я смог объединить локализованные строки с данными, используя свойство Binding.StringFormat:

mybinding.StringFormat = "# {0}";

для "# предметов". Моя проблема заключается в том, что мне теперь нужно объединить две (или более) локализованные строки в коде. Я быстро понял, что смогу использовать Multibinding и добавлять свои привязки к нему, сохраняя то, как дела в настоящее время работают, однако, используя Multibinding.StringFormat, не работает. Я пытаюсь использовать myMultiBinding.StringFormat = "{0} {1}"; Чтобы вставить пространство между двумя значениями связывания, но он просто кажется пустым при связании с этикеткой «Приветствия».

Binding b = GetBinding("HelloWorld");   
Binding b2 = GetBinding("Name");

MultiBinding multib = new MultiBinding();
multib.StringFormat = "{0} {1}";
multib.Bindings.Add(b);
multib.Bindings.Add(b2);
Greetings.SetBinding(Label.ContentProperty, multib);

И вот функция GetBinding (), которая захватывает привязку на основе значения пути:

public Binding GetBinding(string name)
{
    Binding binding = new Binding();
    binding.Source = mySource;
    binding.Path = new PropertyPath(name);
    return binding;
}

Кроме того, я должен отметить, что я использую .NET 4., похоже, не работает в XAML. Я также попробовал это в .NET 3.5 после того, как он не работал в 4.0. Обе детские привязки работают ... Если я поставлю преобразователь, значения отображаются. Я бы лучше использовал свойство StringFormat, хотя.

Это было полезно?

Решение

Это проблема с этикеткой. StringFormat на TextBlock кажется, работает ...

http://social.msdn.microsoft.com/forums/en-us/wpf/throad/69bca541-379f-4f8d-ab19-2f55b566e2c9/#1c06f05e-631c-4e51-95f4-cac83a3f457b.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top