2016-12-22 6 views
1

Написание первой программы, ориентированной на UWP и .NET Core, на Windows 10, и вам нужно добавить функцию перетаскивания, чтобы включить изображения, перемещенные из файловых папок. Поскольку я хочу разрешить пользователю упорядочивать выпавшие изображения (эскизы), как они хотят на целевой панели, я выбрал панель Canvas, но не смог заставить drag/drop работать. Перетаскивание файла изображения поверх панели приводило к отображению красного круга (без капли). Изменен тип панели на сетку, и все работает нормально. Любые подсказки о том, как получить панель Canvas для совместной работы?Невозможно перетащить на панели холста

XAML

<GridView Grid.Row="1" x:Name="MainPanel" AllowDrop="True" DragEnter="MainPanel_DragEnter" Drop="MainPanel_Drop" > 

</GridView> 

код за

private void MainPanel_DragEnter(object sender, DragEventArgs e) 
    { 
     e.AcceptedOperation = DataPackageOperation.Copy; 
     e.DragUIOverride.Caption = "drop to add image file to collection"; 
     e.DragUIOverride.IsCaptionVisible = true; 
     e.DragUIOverride.IsContentVisible = true; 
    } 



private async void MainPanel_Drop(object sender, DragEventArgs e) 
     { 
      if (e.DataView.Contains(StandardDataFormats.StorageItems)) 
      { 
       var items = await e.DataView.GetStorageItemsAsync(); 
       // etc. 
      } 

     } 

При попытке использовать панель Canvas, то XAML используется Canvas ключевого слова вместо GridView и Grid.Row = "1" был опущен ,

+0

Любые обновления? Помог ли мой ответ решить проблему? –

+0

Да - молодец. Я не задавал уведомлений по этому вопросу и пропустил ваш ответ. В то же время (конечно) я закодировал обходное решение. благодаря – Mike

ответ

1

Кажется, что панель управления, которая не устанавливает Background или свойство Fill, которое сделает какое-то событие, не может работать.

Определение того, является ли элемент в UI элементом видимым для мыши, касания и ввода стилуса, называется тестирование на удар. Для действий касания, а также для событий взаимодействия или манипуляции, которые являются следствиями действия касания, элемент должен быть проверен на предмет хита, чтобы быть источником события и запускать событие, связанное с действием. В противном случае действие проходит через элемент к любым элементам или родительским элементам в визуальном дереве, которые могут взаимодействовать с этим входом.

Для получения дополнительной информации см. Hit testing and input events.

Таким образом, мы должны быть в состоянии установить Background свойство Canvas что DragEnter и Drop событие может быть уволен.

Например:

<Canvas Background="Transparent" Grid.Row="1" x:Name="MainPanel" AllowDrop="True" DragEnter="MainPanel_DragEnter" Drop="MainPanel_Drop"> 
</Canvas> 
Смежные вопросы