Как ограничить действие перетаскивания одним приложением - PullRequest
1 голос
/ 06 мая 2020

Я добавляю элементы хранилища в DataPackage, когда начинается перетаскивание UIElement, но проблема в том, что если я перетаскиваю его в другие приложения или на Windows рабочий стол, Windows мешает перетаскиванию. Есть ли способ ограничить чтение DataPackage только моим приложением ??

1 Ответ

1 голос
/ 07 мая 2020

В 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, это означает, что сторона, получающая данные, обрабатывает данные (например, как настольный компьютер или другое программное обеспечение), и это приложение процесса не может вмешиваться.

Спасибо.

...