【问题标题】:InvalidCastException when adding new item to table将新项目添加到表时出现 InvalidCastException
【发布时间】:2013-01-20 23:29:30
【问题描述】:

我正在尝试向表中添加一个新项目,但是下面的代码抛出了 InvalidCastException。

这是从添加项目页面将新项目添加到我的表中。 WineDate 来自 DatePicker,WineStars 来自 ListPicker,Category 来自链接到表格的 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

            };

如果您需要任何进一步的信息来帮助我,请告诉我。

【问题讨论】:

  • 可能抛出异常的那一行会有很大帮助。
  • 发布您的表定义和堆栈跟踪以及详细的异常描述。

标签: c# database windows-phone-7 observablecollection


【解决方案1】:

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

(假设WineItem 中的所有属性设置器都没有执行强制转换,但我会先寻求明显的解决方案。)

【讨论】:

  • +1 不错的收获 - 几乎可以肯定,WineCategory 的演员阵容坏了。
  • 谢谢。尽管在检查时我的代码实际上没有什么问题,但我解决了它。错误实际上在我的 XMAL 中
【解决方案2】:
Category = (WineCategory)winecategoriesListPicker.SelectedItem

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

Category = new WineCategory(winecategoriesListPicker.SelectedItem);

【讨论】:

    猜你喜欢
    • 2013-09-03
    • 2023-03-15
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2012-05-06
    相关资源
    最近更新 更多