如何将拖放操作限制为一个应用程序



UIElement拖动开始时,我正在将存储项添加到DataPackage,但问题是,如果我将其拖动到其他应用程序或Windows桌面,Windows会干扰拖放操作。有什么方法可以限制DataPackage只能由我的应用程序读取吗??

在UWP中,可以在DragItemsStarting事件中将数据写入DragItemsStartingEventArgs.Data。您正在编写StorageItem。当拖动到桌面时,系统会调用相应的默认处理方法。这种行为是一种系统行为,UWP应用程序无法阻止它

如果您的目的只是拖动选项卡并创建一个新窗口,那么您不需要将数据写入DataPackage,只需要在应用程序中进行处理,并监听DragItemsCompleted事件。

private void Tabs_DragItemsStarting(object sender, DragItemsStartingEventArgs e)
{
//get file
e.Items.Add(myFile);
}
private void Tabs_DragItemsCompleted(ListViewBase sender, DragItemsCompletedEventArgs args)
{
var items = args.Items;
if (items.Count > 0)
{
foreach (var item in items)
{
if(item is StorageFile file)
{
// create new window
}
}
}
}

如果数据被写入DataPackage,则意味着获得数据的一方对数据进行处理(如桌面或其他软件(,并且该处理应用程序不能干扰。

谢谢。

最新更新