我正在为visual studio 2010中的windows phone 7制作一个宠物店应用程序。我试图从一个页面中获取已经复制到app.xaml临时列表中的项目(可以在调试器中看到)要在篮子页面上的其他列表中显示,但是当单击指向篮子页面的按钮时,应用程序崩溃。我没有对应用程序的任何部分使用绑定
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
thisApp.petBasket.Add(lstAllPets.SelectedItem as Pets);
MessageBox.Show("Item added to the Basket");
}
这是用于将项目添加到临时列表的代码
public void ShowBasket()
{
if (thisApp.petBasket != null)
{
//show pets that have been added to the basket
foreach (Pets currpet in thisApp.petBasket)
{
lstBasketItems.Items.Add(currpet.Name + "" + currpet.Gender + "" + currpet.Dob + "" + currpet.Category + "");
}
}
}
这是我用来尝试输出项目但却导致应用程序崩溃的代码
有谁知道问题可能是什么?
答案 0 :(得分:1)
您的应用可能会崩溃,因为您的宠物篮子中包含空值。
thisApp.petBasket.Add(lstAllPets.SelectedItem as Pets);
如果所选项目不是Pets
,那么operator as
将返回null并将其放入列表中。稍后您只需迭代而不检查空值。
foreach (Pets currpet in thisApp.petBasket)
{
lstBasketItems.Items.Add(currpet.Name + "" + currpet.Gender + "" + currpet.Dob + "" + currpet.Category + "");
}
您应该检查所选项目。
var pet = lstAllPets.SelectedItem as Pets;
if(pet != null)
thisApp.petBasket.Add(pet);
您还可以在currpet
循环中查看foreach
。