当UIElement开始拖动时,我将存储项目添加到DataPackage中,但问题是如果我将其拖动到其他应用程序或Windows桌面上,Windows会干扰下拉操作。有什么办法可以限制DataPackage只能由我的应用程序读取?
在UWP中,你可以将数据写到 DragItemsStartingEventArgs.Data
在 DragItemsStarting
事件。你在写 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
,是指获取数据的一方对数据进行处理(如桌面或其他软件),这个处理应用不能干涉。
谢谢。