Есть ли какая-либо альтернатива DragOver для подавления глифа при перетаскивании?

#c# #xaml #uwp #windows-10-universal

#c# #xaml #увп #windows-10-universal #uwp

Вопрос:

У меня есть UWP-приложение (игра). Вся поверхность приложения представляет собой Win2D AnimatedCanvasControl с включенным перетаскиванием.

Я закодировал обработчик перетаскивания для подавления заголовка фреймворка («Переместить» / «Скопировать» / и т.д.) И глифа.

 private void CnvGemSmash_DragOver (Object sender, DragEventArgs e)
{
    e.AcceptedOperation                 =   DataPackageOperation.None;
    e.DragUIOverride.IsCaptionVisible   =   false;
    e.DragUIOverride.IsGlyphVisible     =   false;
  

Это работает, НО не раньше, чем примерно через 1 секунду после начала перетаскивания. Я просмотрел API-интерфейсы в поисках способа избежать появления глифа на эту долю секунды — в моем приложении это выглядит ужасно.
Есть ли какой-либо способ обойти это?

введите описание изображения здесь

Комментарии:

1. Этот пример кода может быть полезен.

2. Пожалуйста, попробуйте изменить e.AcceptedOperation на DataPackageOperation.Copy .

3. @NicoZhu Я просмотрел образцы и ссылку на API. Что я беру от них, так это то, что я не могу подавить глиф при перетаскивании, поскольку версия DragUI, которая передается в это событие, не раскрывает глиф. Итак, моя первая возможность удалить глиф — это DragOver или DragEnter. Что я и сделал. (Изменение принятой операции просто дало бы мне другой глиф — не уверен, как это поможет!?). Возможно, я понимаю, почему возникает небольшая задержка перед запуском первых событий перетаскивания / ввода, но в свете этого API кажется сломанным, поскольку он не позволяет мне управлять символами.

4. Да, вы правы. причина в том, что область наведения элемента не поддерживает удаление при запуске перетаскивания. Это сделано специально.

5. @NicoZhu Спасибо за подтверждение. Я думаю, я сделаю свою собственную реализацию перетаскивания. Пожалуйста, отправьте свой ответ в качестве ответа, чтобы я мог принять. Это именно то, для чего я задал вопрос.

Ответ №1:

Что я беру от них, так это то, что я не могу подавить глиф при перетаскивании, поскольку версия DragUI, которая передается в это событие, не раскрывает глиф.

Причина в том, что область наведения элемента не поддерживает удаление при запуске перетаскивания. Это сделано специально.