2

我正在创建一个 Windows Phone 7.5 应用程序,理论上,它应该启动一个应该只显示一次的页面。让我们称之为SplashPage.xaml。SplashPage.xaml 包含两个具有不同参数值的按钮:
这是英文按钮,还有另一个按钮:

    private void chooseEnglish_Click_1(object sender, RoutedEventArgs e)
    {
        languageChooser.Add("languageChooser", "English");
        NavigationService.Navigate(new Uri("/MainPage.xaml?Language=English", UriKind.Relative));
    }

但是,目前我还保存了一个LocalSettings值“languageChooser”,单击时的值为“English”,该值存储在ApplicationSettings调用的语言选择器中。现在,我想做的基本上是:
如果(languageChooser 包含“Norwegian”或“English”作为值)
-> 启动时自动将用户重定向(输入 SplashPage.xaml)到 MainPage.xaml
else
->用户选择一种语言,并根据他/她单击的按钮存储该值。

我希望这是足够的信息。截至目前,SplashPage.xaml.cs 的开头如下所示:

    public SplashPage()
    {
        InitializeComponent();

        if ((string)languageChooser["languageChooser"] == "Norwegian" || (string)languageChooser["languageChooser"] == "English")
        {
            NavigationService.Navigate(new Uri("/MainPage.xaml?Language=Norwegian", UriKind.Relative));
        }
        else
        {

        }

    }  

有任何想法吗 ?

4

2 回答 2

2
private void chooseEnglish_Click_1(object sender, RoutedEventArgs e)
{
    languageChooser.Add("languageChooser", "English");
    languageChooser.Save();
    NavigationService.Navigate(new Uri("/MainPage.xaml?Language=English", UriKind.Relative));
}

您的点击事件缺少保存。这会将值保存到 ApplicationSettings。

public SplashPage()
{
    InitializeComponent();

    string language;
    languageChooser.TryGetValue("languageChooser", out language);
    if (language != null)
    {
        NavigationService.Navigate(new Uri("/MainPage.xaml?Language=" + language, UriKind.Relative));
    }

} 

在应用程序启动时加载值。在第一次运行时,它们的键没有任何价值,因此您需要使用 TryGetValue 方法。

于 2013-02-26T14:06:38.297 回答
1

App.xaml.cs你有一个 void forApplication Launching并且Application Activated我假设你有一个 loadind 设置无效,只需为默认语言添加另一个

private void Application_Launching(object sender, LaunchingEventArgs e)
    {         
        LoadSettings();
        DefaultLanguage();
    }

做这样的事情

 void DefaultLanguage() 
    {
            if (languageChooser==null)
            {
                ((App)Application.Current).RootFrame.Navigate(new Uri("/SplashPage.xaml", UriKind.Relative));

            }
            else if (languageChooser =="Norwegian")
            {
                ((App)Application.Current).RootFrame.Navigate(new Uri("/MainPage.xaml?Language=Norwegian", UriKind.Relative));
            }
            else if (languageChooser =="English")
            {
                ((App)Application.Current).RootFrame.Navigate(new Uri("/MainPage.xaml?Language=English", UriKind.Relative));
            }

        }
    }

最后在你WMAppManifest的领域Navigation Page必须是空的。

我希望它对你有用。

于 2013-02-26T14:00:51.267 回答