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