Как лучше всего воспроизвести функциональность пользовательского интерфейса папки Windows Explorer в WPF?

StackOverflow https://stackoverflow.com/questions/2246823

Вопрос

Так что я использую FileSystemWatcher Заполнить и обновить плейлист. Я хочу повторить многие функции Windows Explorer, самое главное:
* Встроенное переименование
* Медленно двойной щелчок, чтобы переименовать

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

Это было полезно?

Решение

В вашем приложении возможно размещение реального окна Windows Explorer, но чревато опасностью: методы различны в XP против Vista против Win7, и вы будете иметь дело со всеми видами низкоуровневых вещей. Я настоятельно рекомендую не попробовать это.

Я думаю, что ваши лучшие варианты:

  1. Используйте microsoft.win32.openfiledialog, если он может быть легко адаптирован к вашей потребности, или
  2. Кодировать свою собственную функциональность, или если вы очень смелые:
  3. Запустите отдельное окно Explorer, необязательно с кодом, который пытается заставить ее позицию и размер быть за пределами вашего приложения (это тоже сложно ...)

Примечания по встроенной функции переименования

Встроенное переименование и медленный дважды щелкните, чтобы переименовать функции, действительно довольно тривиальны для реализации.

В вашем просмотре модель добавить:

  • «NewName» строковой зависимости
  • «Переименование» Bool Deperiancerporty с PropertyChangeDcallback. Когда «переименование» идет в действие, копируйте имя в NewName. Когда он идет false, если NewName! = Имя переименование файла имя обновления.

В ваш DataTemplate добавьте триггер на «переименование», который заменяет ваш текстовый блок, связанный с «название», с помощью текстового поля, связанного с «NewName».

Добавьте эти обработчики событий: * Событие Keydown: если F2 нажимает переименование переименования. Если ввод нажимается и переименован, установите re rearaming = false. Если ESC нажимает и переименовает имя копирования в NewName и установите reNaming = false. * Событие LOSTFOCUS: SET RENAMING = FALSE * Событие SelectionChanged в контейнере: Запись временной метки последнего изменения выбора. * Mousedown Event: если влево щелкните и выбор изменился> 0,5 секунды назад, установите renaming = true

Многие другие функции просмотра Explorer также легко реализовать, такие как группировка и несколько столбцов.

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top