【问题标题】:Change language for dialog after overriding language?覆盖语言后更改对话框的语言?
【发布时间】:2018-12-03 09:25:21
【问题描述】:

我在 MainPage.cs 中的代码

ApplicationLanguages.PrimaryLanguageOverride = "ja-jp";

XAML

<Button content="Click" Click="Button_Click" />

在此之后,我用我的代码打开了对话框

 private async void Button_Click(object sender, RoutedEventArgs e)
        {
            {

                testDialog dialog = new testDialog();      
                await dialog.ShowAsync();

            }
        }

我的 testDialog 的 XAML 代码

 <TextBlock x:Uid="TestTextBlock" />

我已经在 Resources.resw 文件中定义了语言的文本,如果我将文本块放在当前的 MainPage 中它工作正常,但是当我将它放在对话框中时,文本块的文本不会改变,它只会在我重置应用程序后改变。有什么想法可以解决这些问题吗?'

【问题讨论】:

  • “我重置了应用程序”你的意思是什么?
  • 我的意思是关闭应用程序并打开。
  • App.xaml.cs 文件中尝试ApplicationLanguages.PrimaryLanguageOverride = "ja-jp";
  • 知道如何动态更改它吗?我的意思是 ApplicationLanguages.PrimaryLanguageOverride = "value",value 是用户从列表框中选择的语言。我不想把它放在 App.xaml.cs 中。让我直截了当地说,我认为 UI 在我覆盖语言后没有更新,所以它只有在我重置应用程序后才会生效。
  • 这个答案可能对你有帮助link

标签: c# uwp globalization


【解决方案1】:

设置新语言:

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = "ja-jp";

Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset();

重新加载当前页面:

 private bool Reload(object param = null)
{
    var type = Frame.CurrentSourcePageType;

    try
    {
        return Frame.Navigate(type, param);
    }
    finally
     {
        Frame.BackStack.Remove(Frame.BackStack.Last());
     }

}

您也可以使用Frame.Navigate(this.GetType()); 刷新当前页面 UI。
请查看此帖子以获取更多信息:Dynamically change the language of a universal app

【讨论】:

  • 对不起,我刚下班回来,这不起作用,因为这家伙在同一个主页上使用消息对话框,那是窗口电话,我的是打开内容对话框
  • 只是为了测试,尝试从 TextBlock 后面的代码中获取字符串资源。 ResourceLoader res = ResourceLoader.GetForCurrentView();myTextblock.Text = res.GetString("TestTextBlock.Text");
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 2012-04-04
  • 2022-07-01
  • 1970-01-01
相关资源
最近更新 更多