2011-01-10 4 views
0

나는 다국어 지원을 신청했다. 해당 menuitem을 클릭하면 언어가 변경됩니다. 이것은 잘 작동하지만 내 문제는 내 부모 창이 언어 (메뉴가 부모 창에 있음)를 변경하지 않는 경우에 발생합니다. 모든 하위 창의 언어가 변경됩니다. 창을 다시로드하도록 강제 할 수있는 방법이 있습니까? 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

해결책을 찾았습니다. 데이터 바인딩을 다음과 같이 변경했습니다.

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

여기서 "Menu"는 resx-file의 MenuItem 이름에 해당합니다.

1
+0

예, 링크를 보내 주셔서 감사합니다. 그러나 이러한 resx 파일을 가지고 있기 때문에 XAML과 데이터 바인딩을 새로 고치는 방법이 있는지 궁금합니다. 그렇다면 내 응용 프로그램을 완전히 올바른 언어로 작성해야합니다. – GC87