1
我想翻譯我的組合框的項目。 所以我使用個性化轉換器KeyToTranslationConverter將Enum值轉換爲翻譯後的字符串。數據綁定中的本地化ComboBox無法正常工作
[ValueConversion(typeof(object), typeof(string))]
public class KeyToTranslationConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return LocalizationResourcesManager.GetTranslatedText(value);
}
}
我的組合框綁定到observable集合上,語言條目和selectItem綁定到LanguageEntry屬性。
<ComboBox ItemsSource="{Binding LanguageEntries}"
SelectedItem="{Binding LanguageEntry}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Converter={StaticResource Converter}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我的問題是: 當用戶改變方法被稱爲語言:
CollectionViewSource.GetDefaultView(this.LanguageEntries).Refresh();
所有項目的集合被翻譯除了所選擇的項目被複制:
例如,選定的項目「Anglais」未翻譯,但英語單詞在組合框列表中。
有人可以幫助我。
Arnaud。
簡單的解決方案:不是使用轉換器,而是在模型上公開一個LocalizedName屬性並綁定到該屬性。 – Will
當然,您的解決方案的工作原理。我想使用轉換器,因爲我的視圖模型有很多枚舉集合,所以您的解決方案需要太多時間。如果不包含翻譯代碼,我認爲我的視圖模型更易於使用。 – BobyFish
將SelectedItem屬性綁定到視圖模型的屬性,並在更改語言時刷新綁定的選定屬性。 – vorrtex