在您的特定情況下,我拉出來串轉換器中的資源文件,然後將淨提供本地化可以工作。在構建字符串時,這可能更重要,您構建字符串的順序可能會因不同的語言而改變。
您以標準方式創建資源文件 - 「MyResource.resx」來存儲默認語言的字符串,然後您可以創建名爲「MyResource.Fr-fr.resx」的本地化版本(如果您正在做法語)。這將自動加載並在第一個實例中搜索字符串。如果沒有找到,代碼將從默認資源文件中取出字符串。這樣你就不需要翻譯所有內容 - 對美國/英國的拼寫有所不同。
一般來說,一旦你有這個你可以在你的XAML
添加本地化類具有本地化字符串:
public class Localize : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyChange(String name)
{
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(name));
}
#endregion
#region 'Public Properties'
//Declarations
private static Resources.MyResources _myResources = new Resources.MyResources();
public Resources.MyResources myResources
{
get { return _myResources; }
set { NotifyChange("MyResources"); }
}
#endregion
}
然後在你的XAML添加到您的用戶控件的資源:
<local:Localize x:Key="myResource"
xmlns:local="clr-namespace:MyProject" />
然後你可以使用它:
<TextBlock Text="{Binding myResource.MyString, Source={StaticResource myResource}}"/>
感謝。我對如何本地化應用程序有很好的把握。實際上,除StringFormat字符串之外,所有這些都完成了。正如你在前面的例子中看到的那樣,我有一個對象(在這種情況下是一個日期)通過一個轉換器發送,它根據轉換器的參數將其轉換爲一個字符串。這一切都完美。但是,如果將StringFormat參數添加到綁定中,則無法獲取初始轉換的輸出並本地化StringFormat節,在本例中爲'Received On:'字符串。 –
@CordAwtry - 在這種情況下,將格式化字符串放入您的轉換器中。 – ChrisF