gpt4 book ai didi

c# - 数据绑定(bind) ComboBox 中的本地化无法正常工作

转载 作者:行者123 更新时间:2023-12-03 10:40:02 24 4
gpt4 key购买 nike

我想翻译我的组合框的项目。
所以我使用个性化转换器 KeyToTranslationConverter 将 Enum 值转换为翻译后的字符串。

[ValueConversion(typeof(object), typeof(string))]
public class KeyToTranslationConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return LocalizationResourcesManager.GetTranslatedText(value);
}
}

我的组合框绑定(bind)到可观察的集合 LanguagesEntries 并且 selectItem 绑定(bind)到 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”未翻译,但单词 English 在组合框列表中。

有人能帮我吗。

阿尔诺。

最佳答案

我遇到了这个确切的问题,我通过将转换器绑定(bind)到 itemssource 而不是 itemtemplate 来解决它。

<ComboBox ItemsSource="{Binding LanguageEntries, Converter={StaticResource LanguageEntriesConverter}}">

并且转换需要处理集合而不是每个项目:
    public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is System.Collections.ObjectModel.Collection<string>)
{
foreach (var c in (System.Collections.ObjectModel.Collection<string>)value)
{
c = LocalizationResourcesManager.GetTranslatedText(c);
}
}
return value;
}

每当您通过将其分配给新值或调用 OnPropertyChanged 来更新 itemssource 时,都会调用转换器。

关于c# - 数据绑定(bind) ComboBox 中的本地化无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com