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

Uwp 如何将拖放操作限制为一个应用程序,uwp,uwp-xaml,Uwp,Uwp Xaml,当UIElement拖动开始时,我正在向数据包添加存储项,但问题是如果我将其拖动到其他应用程序或Windows桌面,Windows会干扰拖放操作。是否有任何方法可以限制数据包仅由我的应用程序读取???在UWP中,您可以将数据写入DragItemsStartingEventArgs.data中的DragItemsStarting事件。您正在编写StorageItem。拖动到桌面时,系统将调用相应的默认处理方法。此行为是一种系统行为,UWP应用程序无法阻止它 如果您的目的只是拖动选项卡并创建一个新窗

当UIElement拖动开始时,我正在向数据包添加存储项,但问题是如果我将其拖动到其他应用程序或Windows桌面,Windows会干扰拖放操作。是否有任何方法可以限制数据包仅由我的应用程序读取???

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

如果您的目的只是拖动选项卡并创建一个新窗口,则无需将数据写入
数据包
,只需在应用程序内部处理数据,然后收听
DragItemsCompleted
事件

private void选项卡\u dragitemssstarting(对象发送方,dragitemssstartingeventargs e)
{
//获取文件
e、 Items.Add(myFile);
}
私有无效选项卡\u DragItemsCompleted(ListViewBase发件人、DragItemsCompletedEventArgs args args)
{
变量项=参数项;
如果(items.Count>0)
{
foreach(项目中的var项目)
{
如果(项为StorageFile)
{
//创建新窗口
}
}
}
}
如果将数据写入
数据包
,则意味着获取数据的一方处理数据(如桌面或其他软件),并且此处理应用程序不能干预


谢谢。

嗨,你能解释一下什么是Windows干扰吗?如果你能提供代码,分析问题会更有帮助。我正在设计一个选项卡式编辑器应用程序。我想在将选项卡拖到应用程序外部时创建应用程序的新实例。我遇到的问题是,每当我将其拖到桌面时,系统会将其检测为文件,并为复制/移动/创建快捷方式提供上下文菜单。我必须取消上下文菜单才能达到我想要的效果。我已经更改了将StorageItem添加到e.Data.Properties.add(“token”,myFile)的方法,因为我还在不同的应用程序实例之间使用拖放。我不再需要处理系统将拖动的项检测为StorageItem的问题。但是拖动一些程序,如VS代码和Firefox,仍然无法创建新实例。您好,您想创建VSCode或Firefox的实例吗?如果是,则无法通过UWP解决此问题,因为UWP应用程序不能干扰其他应用程序的内部处理。如果没有,您能展示创建应用程序实例的代码吗?不,我想要的是浏览器的常规选项卡拖放行为。当我在应用程序的另一个实例中删除选项卡时,它会将选项卡移动到另一个实例,我已经在代码中实现了这一点。问题是,如果我将选项卡放在除该应用程序的另一个实例之外的任何位置,我希望创建该应用程序的新实例。例如,如果后台应用程序是firefox/vs,则其上的代码拖放选项卡应创建我的应用程序的新实例,但不会发生这种情况。您好,将元素拖动到应用程序的另一个实例,您可以侦听该实例中与拖放相关的事件,并处理拖动到其他应用程序的情况,由于您无法侦听其他应用程序的丢弃事件,因此需要在
DragItemsCompleted
事件中处理您自己的应用程序。我可以知道您当前如何处理此事件吗?请在此事件中提供代码,以便我能更好地帮助您。