更改Windows 10区域设置后,WPF右键单击菜单将不使用本地语言

时间:2017-10-17 13:04:42

标签: c# .net wpf xaml regional-settings

我已经构建了一个非常基本的WPF,但右键单击滚动条或文本选择时出现的上下文菜单仍保留英文,即使本地语言/区域设置更改为其他语言也是如此。代码附在本文的底部。

起初,我想也许我没有更改系统级别的所有语言相关设置,但是当我在记事本中尝试时,它工作正常(意思是,右键菜单不是英文)。 所以我想也许这是某种.net / WPF特有的问题,所以我检查了Paint.net,它也很好(虽然它可能是非WPF C#和C ++混合?)。还尝试安装latest .net Framework Language Pack,因为它已经存在于我的电脑上而无法安装。

您可以在以下屏幕截图中看到我的应用和记事本之间的上下文菜单的差异:

notepad my app

重现此问题的示例应用程序的代码非常基本。 这是xaml文件:

<Window x:Class="WpfTestScrollLanguage.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfTestScrollLanguage"
    mc:Ignorable="d"
    Loaded="Window_Loaded"
    Language="uk-ua"
    xml:lang="uk-UA"
    Title="MainWindow" Height="100" Width="525">
<Grid Height="300" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible" Language="uk-ua" xml:lang="uk-UA">
    <ListView Language="uk-ua" xml:lang="uk-UA">
        <Button Content="A" Height="20" Width="20"/>
        <Button Content="B" Height="20" Width="20"/>
        <Button Content="C" Height="20" Width="20"/>
        <Button Content="D" Height="20" Width="20"/>
        <TextBlock Height="300" Name="Text"/>
        <TextBox Height="50" Width="300" Text="test123" Language="uk-ua" xml:lang="uk-UA"/>
    </ListView>
</Grid>

这是随之而来的.xaml.cs文件(只有非自动生成的代码):

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    var test = System.Globalization.CultureInfo.CurrentCulture;
    var test2 = System.Globalization.CultureInfo.CurrentUICulture;
    var test3 = this.Language;
    var test4 = System.Windows.Markup.XmlLanguage.GetLanguage(System.Threading.Thread.CurrentThread.CurrentUICulture.Name);
    Text.Text = "a\nb\nc\nd\ne\nf";
}

运行时的所有测试变量都显示“uk-UA”(因为我已经将操作系统语言和区域更改为乌克兰),即使没有在xaml文件本身内手动设置这些值。我只是将它们显式添加到xaml文件中定义的UI元素中,以确保我涵盖所有可能的情况。

编辑:app.config文件非常简单,在这种情况下似乎没有相关性:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>

我对这里可能缺少的内容有所了解吗? (在Windows 10 RS1上运行,但我在RS2和RS3-beta中也观察到同样的问题)

edit2:我试图找到一些existing apps that are based on WPF solely,并找到WittyTwitter - 似乎文本的上下文菜单仍然是英文,但整个应用程序只有英文,所以我可以真的告诉它是否可能是这样的,或者它真的是一个基于WPF的错误?

edit3:有人将此问题标记为this one的副本。虽然它可能或多或少是相同的情况,但那里的答案并没有解决它(正如我在这里所描述的那样),而且我的问题有更多细节来重现问题。

0 个答案:

没有答案