2013-01-20 75 views
0

我试图向表中添加新项目,但下面的代码引发了InvalidCastException。向表中添加新项目时出现InvalidCastException

这是从添加项目页面添加一个新项目到我的表格。 的WineDate从一个datepicker的到来,从ListPicker WineStars和类别从链接到表listpicker未来

WineItem newWineItem = new WineItem 
      { 
       WineDate = wineDatepurchasedTextbox.Value.Value.Date, 
       WineComments = wineCommentsTextBox.Text, 
       WineStars = (string)StarList.SelectedItem, 
       WineType = wineTypeTextbox.Text, 
       WineVinyard = wineVineyardTextbox.Text, 
       WineYear = wineYearTextbox.Text, 
       Category = (WineCategory)winecategoriesListPicker.SelectedItem 

      }; 

请让我知道如果你需要更多的信息来帮助我。

+0

大概在抛出异常将有很大的帮助就行了。 – Steve

+0

用详细的异常描述发布你的表定义和堆栈跟踪。 – Haspemulator

回答

2

您只会执行两次演员:您正在将StarList.SelectedItem转换为string,并且您将winecategoriesListPicker.SelectedItem转换为WineCategory。你应该附加调试器,并查看这些值实际上是是要确定你做错了什么。

(这里假设所有的属性setter的WineItem进行铸造,但我首先要对显而易见的解决方案。)

+0

+1好看 - 这是一个几乎可以肯定的是,它是'WineCategory'的剧组被破坏了。 – dasblinkenlight

+0

谢谢你。虽然没有什么是我的代码实际上是错误的,但检查后我解决了这个问题。 该错误实际上是在我的XMAL中 –

0
Category = (WineCategory)winecategoriesListPicker.SelectedItem 

如果winecategoriesListPicker.SelectedItem是继承WineCategory类,你可以这样做,否则你必须声明这样的类或创建接受winecategoriesListPicker.SelectedItem类型构造函数:

Category = new WineCategory(winecategoriesListPicker.SelectedItem); 
相关问题