如何检查变量是否已被声明? (IsolatedStorage)

时间:2011-12-15 17:52:42

标签: c# silverlight windows-phone-7 settings isolatedstorage

我正在使用C#为Windows Phone 7编写应用程序。 在这个应用程序中,我有一些设置(语言和音频)。 在第一次启动时,应用程序允许您在MainPage.xaml(起始页)中选择语言并将值保存在IsolatedStorage中。 在下一次启动时,应用程序将使用用户选择的语言在开始菜单上自动运行。问题是我无法检查IsolatedStorage中的值,因为它是在MainPage.xaml上选择语言时声明的

这就是我所做的:

在App.xaml中我使用:

RootFrame.Navigating += new NavigatingCancelEventHandler(MainPage.RootFrame_Navigating);

在MainPage.xaml中,我有程序RootFrame_Navigating

public static void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
{
    if (e.Uri.ToString().Contains("/MainPage.xaml") != true)
        return;
    // Change the current navigation
    e.Cancel = true;
    App.RootFrame.Dispatcher.BeginInvoke(delegate
    {
        string confronto = (string)MainPage.Impostazioni.appSettings["lingua"];
        if ((confronto == "italiano") || (confronto == "english"))
            App.RootFrame.Navigate(new Uri("/MainPage.xaml?method=cancel%20navigation&time=", UriKind.Relative));
        else
            App.RootFrame.Navigate(new Uri("/StartMenu.xaml?method=cancel%20navigation&time=", UriKind.Relative));
    });
}

这就是我保存语言的方式:

private void engLink_Click(object sender, RoutedEventArgs e)
{
    Impostazioni.appSettings.Add("language", "english");
}

private void itaLink_Click(object sender, RoutedEventArgs e)
{
    Impostazioni.appSettings.Add("language", "italiano");
}

错误是KeyNotFoundException,因为我在声明之前使用了这个变量,我想......我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:4)

为此目的,有一种方法(Contains())。

If (IsolatedStorageSettings.ApplicationSettings.Contains("language"))
{
    ...
}

答案 1 :(得分:0)

在App.xaml中创建设置,并将其保持空白。

Impostazioni.ApplicationSettings.Add("language","");

在此之后你将能够使用你的这个代码

private void engLink_Click(object sender, RoutedEventArgs e)
    {
        Impostazioni.appSettings.Add("language", "english");
    }
希望它能起作用。