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

How can I drag and drop custom objects between ListViews in UWP apps?

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

当我尝试实现所需的功能时,我似乎被 StandardDataFormats class 提供的选择所束缚。 None 其中似乎适合我想做的事情,当我尝试类似

的事情时
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 异常的原因 - 它是该格式不支持的值。

由于您正尝试在应用内移动对象,因此无需在有效负载中发送整个对象,只需在 StandardDataFormats.Text 有效负载中发送一个唯一标识符即可。

Here's 如何实现这一点的一个很好的例子。