WPF MenuItem在不同的语言环境中输入手势文本

时间:2013-06-06 21:11:28

标签: wpf locale menuitem

我有一个带菜单的WPF程序。我设置菜单如下

<Menu Height="23" Name="menu" DockPanel.Dock="Top" VerticalAlignment="Top" ItemsSource="{Binding}">
        <MenuItem Header="_File" Name="fileMenuItem">
            <MenuItem Command="ApplicationCommands.New"/>
            <MenuItem Command="ApplicationCommands.Open"/>
            <MenuItem Command="ApplicationCommands.Save"/>
            <MenuItem Command="ApplicationCommands.SaveAs"/>
            <MenuItem Header="Save All" />
        </MenuItem>
        <MenuItem Header="_Edit" Name="editMenuItem">
            <MenuItem Command="ApplicationCommands.Copy"/>
            <MenuItem Command="ApplicationCommands.Cut"/>
            <MenuItem Command="ApplicationCommands.Paste"/>
        </MenuItem>
    </Menu>

当程序运行时,我在菜单“文件”和“编辑”下的菜单项的输入手势文本有不同的区域设置。 “文件”下的项目是德语(例如Strg + N),但“编辑”下的项目是英语(例如Ctrl + C)。此外,所有标题都是德语(例如Öffnen)。我没有在代码中的任何地方设置任何与语言环境有关的内容。

我的系统是德语版Windows 7,英文版Visual Studio 2012。不确定这是否与它有关。

1 个答案:

答案 0 :(得分:0)

要为程序设置系统默认语言,需要在App.xaml.cs中添加处理程序:

private void Application_Startup(object sender, StartupEventArgs e)
{
     FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
     new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentUICulture.IetfLanguageTag)));
}

在App.xaml中:

<Application ... Startup="Application_Startup">

设置特定的语言系统可以设置线程的参数:

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");

但在您的情况下,很可能未使用德语语言安装附属程序集。

请参阅:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9d3f9534-4a10-4860-90b5-d2ea5c967fca