如何在UWP应用程序中的ListView之间拖放自定义对象?

如何在UWP应用程序中的ListView之间拖放自定义对象?,listview,uwp,uwp-xaml,Listview,Uwp,Uwp Xaml,我想在UWP应用程序中的ListViews之间拖放自定义对象。ListViews包含基于自定义对象的ListViewItems 当我尝试实现所需的功能时,我似乎被StandardDataFormats类提供的选项所束缚。他们似乎都不适合我想做的事情,当我尝试类似的事情时 private void ListViewOne_DragItemsStarting( object sender, DragItemsStartingEventArgs e ) { e.Data.RequestedOp

我想在UWP应用程序中的
ListView
s之间拖放自定义对象。
ListView
s包含基于自定义对象的
ListViewItem
s

当我尝试实现所需的功能时,我似乎被
StandardDataFormats
类提供的选项所束缚。他们似乎都不适合我想做的事情,当我尝试类似的事情时

private void ListViewOne_DragItemsStarting( object sender, DragItemsStartingEventArgs e )
{
    e.Data.RequestedOperation = DataPackageOperation.Move;
    e.Data.SetData( StandardDataFormats.StorageItems, ListViewOne.Items.First() );
}
我得到一个
COMException
,告诉我不能从传递的元素创建
StorageItem
对象

尝试使用不同的字符串作为
SetData
方法的参数时,会引发异常,表示DataPackage元素不支持该值的数据类型:

e.Data.SetData( "Custom", ListViewOne.Items.First() );

StandardDataFormats.StorageItems
是为从应用程序中的资源管理器拖动文件而保留的。这就是为什么当您尝试设置COM异常时,会得到一个COM异常-该格式的值不受支持

由于您试图在应用程序内移动对象,因此不需要在有效负载中发送整个对象,只需在
StandardDataFormats.Text
payload中发送唯一标识符即可

这是如何实现这一目标的一个很好的例子