2011-01-10 150 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

你的綁定是什麼樣的? – 2011-01-10 14:43:20

回答

1

我找到了解決方法。我改變了我的數據綁定,如下所示:

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

其中「Menu」對應於MenuItem在resx-file中的名稱。

1
+0

是的,謝謝你的鏈接。但是,因爲我有這些resx文件,我想知道是否有任何方法來刷新XAML和我的數據綁定。然後,我會用完全正確的語言讓我的應用程序。 – GC87 2011-01-10 14:01:01