У меня есть это приложение, в которое встроено динамическое переключение языков. В зависимости от выбранной культуры, строки в приложении будут меняться.Переведенные строки и их исходные значения поступают из файлов ресурсов.Я использую привязки для присоединения значений ресурсов к кнопкам, меткам и т. Д. Большая часть этой привязки происходит в коде позади.
Мне удалось объединить локализованные строки с данными с помощью свойства 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.