wpf如何更新窗口
问题描述:
我已经使我的应用程序多语言。当你点击相应的菜单项时,它会改变它的语言。这工作正常,但我的问题来了,当我的父窗口不改变它的语言(菜单是在父窗口)。所有儿童窗户都会改变他们的语言有什么办法强制窗口再次加载?我已经用resx-files完成了我的应用程序,并且还检查了点击menuitem时Thread.CurrentThread.CurrentCulture
和Thread.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>
所以我觉得这是不够的,如果我能以某种方式更新窗口。
答
我找到了解决方法。我改变了我的数据绑定,如下所示:
<MenuItem Header="{Binding Path=Menu, Source={StaticResource Resources}}">
其中“Menu”对应于MenuItem在resx-file中的名称。
答
+0
是的,谢谢你的链接。但是,因为我有这些resx文件,我想知道是否有任何方法来刷新XAML和我的数据绑定。然后,我会用完全正确的语言让我的应用程序。 – GC87 2011-01-10 14:01:01
你的绑定是什么样的? – 2011-01-10 14:43:20