2011-12-15 113 views
0

我正在用C#編寫Windows Phone 7應用程序。 在這個應用程序中,我有一些設置(語言和音頻)。 在第一次啓動時,應用程序允許您在MainPage.xaml(Start Page)中選擇該語言並將值保存在IsolatedStorage中。 在下一次啓動時,應用程序將自動在用戶選擇的語言的開始菜單上運行。問題是,當你選擇在MainPage.xaml中如何檢查變量是否已被聲明? (IsolatedStorage)

語言這就是我所做的,我不能簽入IsolatedStorage的價值,因爲它宣稱:

在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,因爲我在聲明它之前使用了這個變量,我想......我該如何解決這個問題?

謝謝!

回答

4

爲此目的有一種方法(Contains())。

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

在App.xaml中創建設置liks並保持空白。

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

在此之後ü將能夠使用你的

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

的這段代碼希望它會工作。

+0

是的,但這樣一來,每次我打開應用程序,設置將被初始化爲空白,所以它不能夠設置正確的語言...:\ – AshleyT 2011-12-15 18:20:06

相關問題