Как проверить, была ли переменная уже объявлена ​​или нет? (IsolatedStorage) - PullRequest
0 голосов
/ 15 декабря 2011

Я пишу приложение на C # для Windows Phone 7. В этом приложении у меня есть некоторые настройки (язык и аудио).При первой загрузке приложение позволяет выбрать язык в MainPage.xaml (стартовая страница) и сохранить значение в IsolatedStorage.При следующих загрузках приложение автоматически запускается в меню «Пуск» на выбранном пользователем языке.Проблема в том, что я не могу проверить значение в IsolatedStorage, потому что оно объявляется, когда вы выбираете язык на MainPage.xaml

Вот что я сделал:

В App.xaml Iиспользуйте:

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 ]

4 голосов
/ 16 декабря 2011

Для этой цели есть метод (Contains()).

If (IsolatedStorageSettings.ApplicationSettings.Contains("language"))
{
    ...
}
0 голосов
/ 15 декабря 2011

в App.xaml создайте настройки liks и просто оставьте это поле пустым.

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

после этого вы сможете использовать ваш код

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

надеюсь, это сработает.

...