Windows Phone中的System.Collections.Generic.KeyNotFoundException

时间:2015-01-26 08:47:19

标签: c# windows-phone-8

我遇到以下代码的问题:

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。 我如何询问变量是否“未找到”应用程序跳转到另一个页面? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:7)

如果您想在阅读之前知道该密钥是否存在,您可以使用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方法。