Christians Mosers Wpf tutorialのように、MarkupExtension でローカリゼーションを使用しています。これまでのところ、すべてがうまく機能しています。
動作しない唯一のことは、実行時の DataGrid コンテンツのローカライズです。たとえば、observableCollection にバインドされたデータグリッドがあります。Feature 名を表示する 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;
}
問題は、データグリッドが初めていっぱいになったときにのみコンバーターが呼び出されることです。現在のカルチャが変更されても、データグリッドの内容は変更されません。
現在の言語が変更されるたびにデータグリッドの内容を更新するにはどうすればよいですか?