C# 尝试在列表框中拖放图像会在DragDrop.DoDragDrop()上引发InvalidCastException

C# 尝试在列表框中拖放图像会在DragDrop.DoDragDrop()上引发InvalidCastException,c#,wpf,observablecollection,C#,Wpf,Observablecollection,我有一个绑定到可观察集合的列表框。我没有使用MVVM,只是绑定窗口的构造函数 this.LIstBox1.ItemsSource = this.MyObservableCollection; 在ListBox SelectionChanged事件中,我将SelectedItem强制转换为图像,因为我知道我只是用图像填充ListBox。我的测试甚至显示了一个系统.Windows.Controls.Image控件 但当我尝试执行DragDrop.DoDragDrop()时,它会抛出该异常。我更改

我有一个绑定到可观察集合的列表框。我没有使用MVVM,只是绑定窗口的构造函数

this.LIstBox1.ItemsSource = this.MyObservableCollection;
在ListBox SelectionChanged事件中,我将SelectedItem强制转换为图像,因为我知道我只是用图像填充ListBox。我的测试甚至显示了一个系统.Windows.Controls.Image控件

但当我尝试执行DragDrop.DoDragDrop()时,它会抛出该异常。我更改了代码,以便将正确的项传递给正确的参数。第一项是源(列表框),第二项是正在拖动的对象(图像)。然而,我仍然得到同样的错误。我猜它希望删除的项目是ListBoxItem。但它试图抛出列表框似乎很奇怪。这些论点现在是正确的

知道我做错了什么吗


谢谢

您可能需要将前两个参数反转为
DoDragDrop
。第一个是源,第二个是数据。那不是
ListBoxItem
(或者只是
ListBox
)后面跟着
Image
。你说得对,我把他们搞混了。然而,我仍然得到同样的例外。我更新了我的帖子以反映这一变化。我想知道源代码应该是
ListBox
还是
ListBoxItem
…您两个都试过了吗?例如,将第一个参数更改为
lb.SelectedItem
?@HansPassant你是什么意思,Hans?ListBox肯定有一个SelectedItem属性。