Как я могу перетаскивать виртуальные файлы, созданные после удаления, из приложения UWP? - PullRequest
2 голосов
/ 04 июня 2019

Я пишу приложение UWP, которое поддерживает перетаскивание виртуальных файлов в оболочку Windows.Файлы иногда большие.Поэтому я не хочу начинать загрузку и обработку контента, пока файл не будет удален (или вставлен).Устаревшие настольные приложения могут сделать это, внедрив форматы буфера обмена CFSTR_FILEDESCRIPTOR и CFSTR_FILECONTENTS.Есть ли способ получить подобную функциональность из приложения UWP?

Что я пробовал

Я знаю, что у UWP есть отличный способ перетаскиванияфайлы в оболочку, но я не могу найти способ отложить создание файла до удаления.В приведенном ниже примере провайдер данных с задержкой вызывается немедленно, когда файл перетаскивается через проводник Windows.

private void GridView_DragItemsStarting(object s, DragItemsStartingEventArgs e)
{
    e.Data.SetDataProvider(StandardDataFormats.StorageItems, async (DataProviderRequest request) =>
    {
        //This code runs immediately when file gets dragged over the Windows shell.
    });
}

Я также экспериментировал с StorageFile.ReplaceWithStreamedFileAsync(), но опять же, весь файл запрашивается непосредственно перед тем, как файлотброшен.Есть ли способ отложить запрос данных до тех пор, пока файл не будет удален?

Эта проблема еще хуже, когда я пытаюсь скопировать виртуальный файл в буфер обмена.Данные файла немедленно запрашиваются.

...