如何将拖拽动作限制在一个应用程序中?

问题描述 投票:1回答:1

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

uwp uwp-xaml
1个回答
1
投票

在UWP中,你可以将数据写到 DragItemsStartingEventArgs.DataDragItemsStarting 事件。你在写 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,是指获取数据的一方对数据进行处理(如桌面或其他软件),这个处理应用不能干涉。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.