如何在 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 如何实现这一点的一个很好的例子。
我想在 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 如何实现这一点的一个很好的例子。