Использование Multibinding.StringFormat в коде позади - PullRequest
2 голосов
/ 06 октября 2010

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

Мне удалось объединить локализованные строки с данными с помощью свойства 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.

1 Ответ

1 голос
/ 07 октября 2010

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

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

...