2

我有这个内置了动态语言切换的应用程序。根据所选的文化,整个应用程序中的字符串都会改变。翻译后的字符串及其原始值来自资源文件。我使用绑定将资源值附加到按钮、标签等。大部分绑定发生在后面的代码中。

我已经能够使用 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 中似乎也不起作用。在 4.0 中不起作用后,我也在 .NET 3.5 中尝试过。两个子绑定都在工作......如果我提供转换器,则会显示值。我宁愿使用 StringFormat 属性。

4

1 回答 1

1

这是标签的问题。TextBlock 上的 StringFormat 似乎有效......

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

于 2010-10-07T18:06:00.583 回答