C # UWP - Как получить изображение перетаскивания объекта? - PullRequest
0 голосов
/ 23 декабря 2018

Как получить копию перетаскиваемого изображения для элемента, который я перетаскиваю в своем приложении?

Событие DragStarting содержит объект DragStartingEventArgs , которыйвключает в себя объект DragUI , описание которого: " Визуальное представление перетаскиваемых данных. " В идеале я хотел бы сделать что-то подобное в событии DragStarting:

    private void OnDragStarting( UIElement sender, DragStartingEventArgs args )
    {
        // Create a new bitmap image object
        var dragImage = new BitmapImage();

        // Assign the drag image to the new bitmap image object
        dragImage = args.DragUI. ????
    }

Однако, похоже, нет способа получить изображение перетаскивания из объекта DragUI.DragUI содержит только методы «Set *» и никакие методы «Get *».

Существует ли способ получить изображение перетаскивания при начале операции перетаскивания?

1 Ответ

0 голосов
/ 23 декабря 2018

Вы можете использовать DataView.GetStorageItemsAsync() для получения элементов, которые вы перетаскивали в свои приложения.

<Grid AllowDrop="True" DragOver="Image_drop_drag_over_ui" Drop="image_drop"/>

// C # код

public async void Image_Drop(object sender, DragEventArgs e)
{
     if (e.DataView.Contains(StandardDataFormats.StorageItems))
     {
        List<StorageFile> received_images = new List<StorageFile>();
        var items = await e.DataView.GetStorageItemsAsync();
        var storageFile = items[0] as StorageFile;
        received_images.Add(storageFile);
     }
}
private void Image_drop_drag_over_ui(object sender, DragEventArgs e)
{
     e.AcceptedOperation = DataPackageOperation.Copy;
     e.DragUIOverride.Caption = "Drop receipt";
     e.DragUIOverride.IsCaptionVisible = true; 
}
...