2011-12-15 9 views
0

私はWindows Phone 7のC#でアプリケーションを書いています。 このアプリケーションでは、いくつかの設定(言語と音声)があります。 最初の起動時に、アプリケーションはMainPage.xaml(Start Page)で言語を選択し、その値をIsolatedStorageに保存することができます。 次回の起動時に、アプリケーションは、ユーザーが選択した言語でスタートメニューで自動的に実行されます。私が使用App.xamlで変数がすでに宣言されているかどうかをチェックする方法は? (IsolatedStorage)

:あなたは私がやったことだMainPage.xamlを

の言語を選択すると、それが宣言されているため問題は、私がIsolatedStorageの値を確認することができないということです

私が手続き RootFrame_Navigating持っMainPage.xamlをで
RootFrame.Navigating += new NavigatingCancelEventHandler(MainPage.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)); 
    }); 
} 

をそして、これは私が言語を保存する方法です。

この変数が宣言される前にこの変数を使用しているため、エラーはKeyNotFoundExceptionです。これはどのように修正できますか?

ありがとうございました!

答えて

4

この目的のための方法(Contains())があります。毎回私は、アプリケーションを開く

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

(App.xamlの場合)設定を作成して空白にしてください。この後

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

uがうまくいけば、それが仕事でしょうあなた

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

のこのコードを使用することができます。

+0

はい、しかし、この方法では、設定は空白に初期化されますので、...正しい言語を設定することはできません:\ – AshleyT

+0

私は間違っていないよ場合これらのアプリの設定は、(独立したストレージのように)削除するまで、またはアプリをアンインストールした後にのみ保持されます。それらがそうでない場合、IsolatedStorege.ApplicationSettingsを使用して試してください – Mohit

+0

私はこのエラーを受け取ります: 値は期待された範囲内に収まりません。 – AshleyT

関連する問題