我有這個內置動態語言切換的應用程序。基於所選的Culture,整個應用程序中的字符串都會改變。翻譯後的字符串及其原始值來自資源文件。我使用綁定將資源值附加到按鈕,標籤等。大部分綁定發生在後面的代碼中。在代碼隱藏中使用Multibinding.StringFormat
我已經能夠串聯本地化的字符串與使用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屬性。