Мне нужно добавить в свое приложение место, где пользователи могут перетаскивать файлы, и они появляются так же, как когда вы перетаскиваете файлы в папку в Windows. есть программа в здесь, который обладает необходимой мне функциональностью, но он написан с использованием оконных форм, а я использую wpf. так что эта программа великолепна, потому что в ней есть нужные мне функции. перечислю характеристики:
1) Я могу получить те же значки, что и на рабочем столе.
2) Я могу перетаскивать папки и файлы наружу. обратите внимание, как я перетаскиваю папку с библиотеками на картинку
3) когда я щелкаю правой кнопкой мыши по файлу, я получаю то же контекстное меню, что и в Windows
4) Я могу перетаскивать файлы и папки.
обратите внимание, что диалоговое окно «Файл примера» было создано с использованием оконных форм, и исходный код можно загрузить по первой ссылке, которую я предоставил.
Я не хочу создавать файловый диалог, иначе я буду использовать класс openFileDialog. Мне нужно встроить границу в мое приложение wpf, где пользователи могут перетаскивать и выбирать файлы. также они могут перетаскивать файлы наружу и открывать файлы оттуда.
Итак, это 4 вещи, которые мне нужно добавить в мое приложение wpf. Позвольте мне описать то, что я сделал, чтобы попытаться решить каждый метод.
1)
Я пытался найти много разных мест, чтобы получить код, необходимый для извлечения значков из файлов, и они никогда не выглядят идентичными тем, что на рабочем столе. Я пробовал: это и это тоже и некоторые другие, которые я сейчас не могу вспомнить.
обратите внимание, что этот шаг будет легким, меня больше интересуют другие функции
2)
этот может быть самым сложным. Я не реализовал это, но я думал, что для достижения этой функциональности мне нужно будет иметь другое окно. это окно будет содержать изображение внутри. Всякий раз, когда я перетаскиваю мышь на значок, я создаю экземпляр этого окна, передавая изображение, которое я перетаскиваю, в качестве параметра, и оно закрывается при нажатии onMouseUP. Я не знаю, как отслеживать, в каком окне я отпускаю мышь, поэтому я не уверен, стоит ли мне пытаться реализовать эту технику.
3)
Я понятия не имею, как реализовать эту функцию.
4)
это легко. Единственная трудность заключается в том, что иногда вы можете перетаскивать файлы с отдельного диска, например, с флэш-накопителя, и вам потребуется метод, чтобы скопировать его. или, может быть, вы перетащите ссылку из меню «Пуск» Windows.
Может быть, я могу использовать функциональность диалогового окна. Я думаю, что мне не нужно изобретать велосипед. Я не так много знаю о формах Windows, поэтому мне трудно реализовать этот код на wpf.