Я пишу приложение 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()
, но опять же, весь файл запрашивается непосредственно перед тем, как файлотброшен.Есть ли способ отложить запрос данных до тех пор, пока файл не будет удален?
Эта проблема еще хуже, когда я пытаюсь скопировать виртуальный файл в буфер обмена.Данные файла немедленно запрашиваются.