1

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;
}

問題は、データグリッドが初めていっぱいになったときにのみコンバーターが呼び出されることです。現在のカルチャが変更されても、データグリッドの内容は変更されません。

現在の言語が変更されるたびにデータグリッドの内容を更新するにはどうすればよいですか?

4

1 に答える 1