我有这个内置动态语言切换的应用程序。根据所选的Culture,整个应用程序中的字符串都会发生变化。翻译的字符串及其原始值来自资源文件。我使用绑定将资源值附加到按钮,标签等。大多数绑定发生在后面的代码中。
我已经能够使用Binding.StringFormat属性将本地化字符串与数据连接起来:
mybinding.StringFormat = "# {0}";
表示“项目数”。我的问题是我现在需要在后面的代码中连接两个(或更多)本地化字符串。我很快意识到我可以使用MultiBinding并添加我的绑定,保持当前的工作方式,但是,使用MultiBinding.StringFormat似乎不起作用。我正在尝试使用myMultiBinding.StringFormat = "{0} {1}";
在两个绑定值之间插入一个空格,但在绑定到“Greetings”标签时它只显示为空白。
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属性。
答案 0 :(得分:1)
这是Label的一个问题。 TextBlock上的StringFormat似乎有用......