2010-10-06 31 views
2

我有這個內置動態語言切換的應用程序。基於所選的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屬性。

回答