模板10切换语言设置

时间:2016-09-01 01:43:57

标签: c# visual-studio template10

我在SettingsPage.xaml

中有以下代码
<ToggleSwitch x:Name="LanguageSwitch" x:Uid="LanguageSwiich"
                                  Header="Switch language"
                                  Margin="2,130,0,0"
                                  IsOn="{Binding IsFullScreen, Mode=TwoWay}"
                                  OffContent="English"
                                  OnContent="Franche"
                                  RelativePanel.AlignLeftWithPanel="True"
                                  RelativePanel.AlignTopWithPanel="True"  />

并将其添加到SettingsService.cs中,以下代码仅用于测试

public bool IsEnglish
    {
        get { return _helper.Read<bool>(nameof(IsEnglish), true); }
        set
        {
            _helper.Write(nameof(IsEnglish), value);
            Views.Shell.HamburgerMenu.IsFullScreen = value;
        }
    }

并将其添加到SettingsPageViewModel.cs

public bool IsEnglish
    {
        get { return _settings.IsEnglish; }
        set
        {
            _settings.IsEnglish = value;
            base.RaisePropertyChanged();
            if (value)
            {
                var culture = new CultureInfo("fr");
                Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name;
                CultureInfo.DefaultThreadCurrentCulture = culture;
                CultureInfo.DefaultThreadCurrentUICulture = culture;
            }
            else
            {
                var culture = new CultureInfo("en-US");
            }
        }
    }

正在为IsFullScreen工作,但我想让它改变语言而不是全屏。

在App.xaml.cs中添加了最后一段代码

var IsEnglish = _settings.IsEnglish;

所以我应该在我的代码中更改它以使其工作。

1 个答案:

答案 0 :(得分:0)

只是为了澄清你只有在切换是&#34; true&#34;?时才想看英语作为语言基于您至少显示我正在解释它的代码显示

//上面的COPIED CODE

_settings.IsEnglish = value;
base.RaisePropertyChanged();
if (value)  // if true then do this...
{
    var culture = new CultureInfo("fr-FR");
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name;
    CultureInfo.DefaultThreadCurrentCulture = culture;
    CultureInfo.DefaultThreadCurrentUICulture = culture;
}
else  //not true aka FALSE
{
    var culture = new CultureInfo("en-US");
}

然后法国人会在&#34; True&#34;国家......否则&#34;假&#34;国家英语..

至于在运行时更新ui,你需要做一些像这个问题中的答案C# change app language programmatically UWP realtime

答案中的作者也表示需要重新启动应用程序。我还要添加,除非你在应用程序中设置了Resources文件,只需更改CultureInfo就不会做任何事情,除非你有资源文件和翻译到位...已经引用x:Uid以及它如何帮助你进行全球化申请书。