0

次の問題があります。私のWPFソリューションには、2行しかない2つのresxファイルが含まれています

Resources.resx -Name: IsManager Value: Yes | Name: IsNotManager Value: No
Resources.pl-PL.resx -Name: IsManager Value : Tak | Name: IsNotManager Value: Nie

MainWindow にもシンプルなテキストブロックがあります

<TextBlock Text="{x:Static prop:Resources.IsManager}" />

CurrentUICulture を pl-PL に変更すると、TextBlock のテキスト プロパティが変更されないのはなぜですか? プロパティは一度だけ初期化されることを理解しています。このプロパティの値を「更新」する必要がありますが、これを自動的に行うオプションはありますか? 以下のコードを変更します。

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("pl-PL");
}

この Text プロパティを変更するにはどうすればよいですか?

4

1 に答える 1

2

静的な値にバインドすると更新されません。ウィンドウを開くか、ビューまたは UI を再作成する必要があります。より正確には、Text プロパティをもう一度評価するためにテキストブロックを再作成する必要があります。

解決策はランタイムのローカリゼーションです。いくつかの選択肢があります。

  1. 動的リソースとバインディングの使用: http://www.codeproject.com/Articles/17334/Localizing-WPF-Applications-using-Locbaml

  2. ObjectdataProvider の使用: http://www.codeproject.com/Articles/22967/WPF-Runtime-Localization#AutomaticUpdatingWithODP

http://altfo.wordpress.com/2009/02/18/wpf-localization-or-xaml-localization/のように WPF ランタイムのローカライズ後に検索すると、いくつかの優れたリソースを見つけることができます。

于 2013-09-24T15:55:11.510 に答える