我希望以前没有问过,我在MSDN或这里找不到一个简单的解决方案。C#Windows Phone 8.1语言选择
windows phone 8.1应用程序部署在多种语言中。 为此,我使用Strings\en-US\Ressources.resw
中的默认语言(英语),并安装了Multilingual App Toolkit,并在其中添加了所有其他语言。
要更改语言,我有以下代码:
private void changeLang(string cul)
{
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = cul;
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForViewIndependentUse().Reset();
Windows.ApplicationModel.Resources.Core.ResourceContext.GetForCurrentView().Reset();
if (Frame != null)
Frame.Navigate(typeof(MainPage));
}
可以通过
changeLang("en-US");
被称为之后,我不得不重新启动应用程序(不能使它工作没有重新启动)。
问题是我的实现。我创建了一个名为Settings
的页面,我希望为用户提供更改语言的可能性。
现在我想为用户提供一个ComboBox
所有我翻译的语言。默认情况下,所选的ComboBoxItem
应显示应用程序的当前语言(不是系统语言,因为用户可能已经更改了语言)。
在这里我解决了这个问题,我希望这对其他人也是有用的。
首先,我们创建一个新的struct
:
public class ComboboxItem
{
public string Text { get; set; }
public object Value { get; set; }
public override string ToString()
{
return Text;
}
}
然后在我们添加以下代码的形式在OnNavigate
部分:
settings_language_cb.Items.Add(new ComboboxItem { Text = "Deutsch", Value = "de-DE" });
settings_language_cb.Items.Add(new ComboboxItem { Text = "English", Value = "en-US" });
var curLangItem = settings_language_cb.Items.SingleOrDefault(x => (x as ComboboxItem).Value.ToString() == CultureInfo.CurrentCulture.Name);
settings_language_cb.SelectedItem = curLangItem;
settings_language_cb.PlaceholderText = (curLangItem as ComboboxItem).Text;
而这一切。
https://gist.github.com/artem-zinnatullin/8062647这可能会帮助您在不重新启动应用程序的情况下更改语言。它在我的Windows Phone 8应用程序中为我工作。 – 2017-03-13 10:48:40