2011-01-10 17 views
0

私は自分のアプリケーションを多言語にしました。対応するメニュー項目をクリックすると言語が変わります。これは正常に動作しますが、私の問題は親ウィンドウが言語を変更しないときです(メニューは親ウィンドウにあります)。すべての子ウィンドウが言語を変更します。ウィンドウを強制的に再度ロードする方法はありますか? resx-filesでアプリケーションを実行したところ、menuitemをクリックするとThread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICultureが変更されていることが確認されました。wpf更新方法ウィンドウ

編集:私は、多言語の一部を行うために自分自身のクラスを作って、それがこの記事のアプローチから適応したものです

WPF Runtime Localization、それは動作します。ここでは、データバインディングを表示するために私のXAMLコードの一部です:

<Window x:Class="Multilingual.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:properties="clr-namespace:Multilingual.Properties" 
    Height="350" Width="300" Name="mainWindow" ResizeMode="CanMinimize" SizeToContent="Manual" Closing="mainWindow_Closing" KeyDown="mainWindow_KeyDown"> 

<Menu Height="22" Name="menu" Width="{Binding ElementName=mainWindow, Path=Width}" HorizontalAlignment="Left" VerticalAlignment="Top" Background="Snow" BorderThickness="2"> 
     <Menu.BitmapEffect> 
      <DropShadowBitmapEffect /> 
     </Menu.BitmapEffect> 
     <MenuItem Header="{x:Static properties:Resources.Menu}"> 
      <MenuItem Header="{x:Static properties:Resources.Language}" > 
       <MenuItem Header="{x:Static properties:Resources.Deutsch}" Name="itemDeutsch" Click="menuItem_Click" /> 
       <MenuItem Header="{x:Static properties:Resources.English}" Name="itemEnglish" Click="menuItem_Click" /> 
      </MenuItem> 
      <MenuItem Header="{x:Static properties:Resources.Exit}" Click="itemExit_Click"/> 
     </MenuItem> 
    </Menu> 

だから、私は何とかウィンドウを更新することができるならば、それは十分だろうと思います。

+1

バインディングはどのように見えますか? –

答えて

1

解決策が見つかりました。 「メニュー」RESXファイルでのMenuItemの名前を対応

<MenuItem Header="{Binding Path=Menu, Source={StaticResource Resources}}"> 

:私はこのように私のデータバインディングを変更しました。

1
+0

はい、そのリンクをありがとうございます。しかし、私はそれらのresxファイルを持っているので、私はXAMLと私のデータバインディングをリフレッシュする方法があるのだろうかと思います。そうすれば、私は自分のアプリケーションを完全に正しい言語にすることができます。 – GC87

関連する問題