Мне нужно перетащить файл изображения в мое приложение WPF. Сейчас у меня срабатывает событие, когда я вставляю файлы, но я не знаю, что делать дальше. Как мне получить изображение? Является ли sender
объект изображения или контроль?
private void ImagePanel_Drop(object sender, DragEventArgs e)
{
//what next, dont know how to get the image object, can I get the file path here?
}
AllowDrop
установлено значение True, ноDrop
обработчик событий никогда не вызывается. Когда я перетаскиваю файл в окно, я вижу круговой символGrid
качестве корневого элемента сBorder
внутренним элементом соBackground
свойством, установленным на что-то (белый - это нормально, но не прозрачный). ВнутриBorder
я поместил фактическое содержимое.Файл изображения содержится в
e
параметре, который является экземпляромDragEventArgs
класса .(
sender
Параметр содержит ссылку на объект, вызвавший событие.)В частности, проверьте
e.Data
член ; как поясняется в документации, это возвращает ссылку на объект данных (IDataObject
), который содержит данные из события перетаскивания.IDataObject
Интерфейс предоставляет ряд методов для получения объекта данных , который вы после этого . Вероятно, вы захотите начать с вызоваGetFormats
метода , чтобы узнать формат данных, с которыми вы работаете. (Например, это реальное изображение или просто путь к файлу изображения?)Затем, как только вы определили формат перетаскиваемого файла, вы вызовете одну из определенных перегрузок
GetData
метода для фактического получения объекта данных в определенном формате.источник
В дополнение к ответу AR обратите внимание, что если вы хотите использовать
TextBox
drop, вы должны знать следующие вещи.TextBox
похоже, уже есть некоторая обработка по умолчанию дляDragAndDrop
. Если ваш объект данных -String
это просто работает. Другие типы не обрабатываются, и вы получаете эффект Forbidden mouse, и ваш обработчик Drop никогда не вызывается.Похоже , вы можете включить свое собственное обращение с
e.Handled
к истинному вPreviewDragOver
обработчик событий.XAML
C #
источник