диалоговое окно имитации файла

Мне нужно добавить в свое приложение место, где пользователи могут перетаскивать файлы, и они появляются так же, как когда вы перетаскиваете файлы в папку в Windows. есть программа в здесь, который обладает необходимой мне функциональностью, но он написан с использованием оконных форм, а я использую wpf. так что эта программа великолепна, потому что в ней есть нужные мне функции. перечислю характеристики:

1) Я могу получить те же значки, что и на рабочем столе.

2) Я могу перетаскивать папки и файлы наружу. обратите внимание, как я перетаскиваю папку с библиотеками на картинку

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

3) когда я щелкаю правой кнопкой мыши по файлу, я получаю то же контекстное меню, что и в Windows

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

4) Я могу перетаскивать файлы и папки.

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

обратите внимание, что диалоговое окно «Файл примера» было создано с использованием оконных форм, и исходный код можно загрузить по первой ссылке, которую я предоставил.

Я не хочу создавать файловый диалог, иначе я буду использовать класс openFileDialog. Мне нужно встроить границу в мое приложение wpf, где пользователи могут перетаскивать и выбирать файлы. также они могут перетаскивать файлы наружу и открывать файлы оттуда.

Итак, это 4 вещи, которые мне нужно добавить в мое приложение wpf. Позвольте мне описать то, что я сделал, чтобы попытаться решить каждый метод.

1)

Я пытался найти много разных мест, чтобы получить код, необходимый для извлечения значков из файлов, и они никогда не выглядят идентичными тем, что на рабочем столе. Я пробовал: это и это тоже и некоторые другие, которые я сейчас не могу вспомнить.

обратите внимание, что этот шаг будет легким, меня больше интересуют другие функции

2)

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

3)

Я понятия не имею, как реализовать эту функцию.

4)

это легко. Единственная трудность заключается в том, что иногда вы можете перетаскивать файлы с отдельного диска, например, с флэш-накопителя, и вам потребуется метод, чтобы скопировать его. или, может быть, вы перетащите ссылку из меню «Пуск» Windows.

Может быть, я могу использовать функциональность диалогового окна. Я думаю, что мне не нужно изобретать велосипед. Я не так много знаю о формах Windows, поэтому мне трудно реализовать этот код на wpf.


person Tono Nam    schedule 27.10.2011    source источник
comment
Модель SO - это один вопрос и один принятый ответ (который в идеале должен полностью отвечать на вопрос). Разделите это, пожалуйста :)   -  person Merlyn Morgan-Graham    schedule 27.10.2011
comment
Слишком много в этом вопросе. Скриншоты явно из файлового диалога. Но тот, который использует обрезание шаблона ресурса.   -  person David Heffernan    schedule 27.10.2011


Ответы (1)


Что вам нужно, так это повторно использовать элементы управления из Windows, а из .NET к ним можно получить доступ через Windows API Code Pack.

Взгляните на раздел Windows Shell в пакете кода и, в частности, на элемент управления Explorer Browser, который должен предоставить вам все необходимые функции.

person Isak Savo    schedule 27.10.2011