我在Christians Mosers Wpf 教程中使用带有 MarkupExtension 的本地化。到目前为止,一切都很好。
唯一不起作用的是运行时 DataGrid 内容的本地化。例如,我有一个绑定到 observableCollection 的数据网格。它包含一个显示功能名称的 TextColumn。功能名称应该是可本地化的。
<DataGridTextColumn Header="{t:Translator Feature}" IsReadOnly="True"
Binding="{Binding Path=Feature, Converter={Utilities:EnumDescriptionConverter}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
Feature 是一个枚举值,我使用转换器从中检索描述。转换器也进行翻译。
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is Enum)
{
var myEnum = (Enum)value;
string description = GetEnumDescription(myEnum);
return TranslationManager.Instance.Translate(description);
}
return value;
}
问题是转换器仅在第一次填充数据网格时才被调用。当当前区域性改变时,数据网格内容永远不会改变。
每次当前语言更改时,如何让数据网格内容更新?