1. ホーム
  2. c#

[解決済み] Windows PhoneにおけるSystem.Collections.Generic.KeyNotFoundExceptionについて

2022-02-07 06:55:05

質問

以下のコードで問題が発生しました。

string name = (string)PhoneApplicationService.Current.State["name"];
names.Add(name);
InitializeComponent();
List.ItemsSource = names;

によるものです。

string name = (string)PhoneApplicationService.Current.State["name"];

というエラーメッセージが表示されました。

System.Collections.Generic.KeyNotFoundException' タイプの例外が発生しました。 mscorlib.ni.dll で発生したが、ユーザーコードで処理されなかった。

コードはC#で書かれています。 他のページにあるVariabelを使おうとしています。 もし、その変数が見つからなかったら、どのようにして、アプリを他のページにジャンプさせることができますか? どうすればこの問題を解決できますか?

解決方法は?

キーを読み込む前に、そのキーが存在するかどうかを知りたい場合は ContainsKey メソッドを使用します。

if (PhoneApplicationService.Current.State.ContainsKey("name"))
{
    string name = (string)PhoneApplicationService.Current.State["name"];
    names.Add(name);
    InitializeComponent();
    List.ItemsSource = names;
}
else
{
    // Whatever
}

また、キーが見つからないときに別のページに移動したいようですね。の呼び出しは InitializeComponent は、ページのコンストラクタでコードを実行していることを示しています。コンストラクタからNavigationServiceを使用しようとすると、NullReferenceExceptionが発生します。コードを Loaded イベントをオーバーライドするか、あるいは OnNavigatedTo メソッドを使用します。