Pull to refresh

Полезный Велосипед – Выбрать каталог на WPF без WinForms

Приветствую, хабражители.

Думаю, что многие не любят «велосипеды» и «костыли», хотя используют частенько. Но иногда без «велосипедов» никуда. Вот один из подобных случаев, когда для выбора каталога, почему-то нужно использовать Windows.Forms, ввиду отсутствия стандартного контрола в WPF.

Но начну сначала. Понадобилось мне использовать диалоговое окно «Выбрать каталог» в своем приложении, которое было написано на WPF. Возможно для многих это давно не новость, но я с удивлением узнал, что стандартного диалога для выбора каталога на WPF — просто нет.

На stackoverflow.com на подобный вопрос посоветовали использовать OpenFileDialog и FolderBrowserDialog из System.Windows.Forms, Microsoft.Win32.OpenFileDialog.

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

Мне не хотелось смешивать Windows.Forms и WPF. Возникает разное отображение контролов. В самом приложении на WPF один (Ваш красивый оригинальный) стиль, а в Диалоговом окне – другой (стандартный и унылый). Об этом написано тут. Скажу честно, сам проверять не стал, поверил статье и своей логике.

Если Вы, как и я используете WPF то, скорее всего, хотите сделать приложение с хорошим дизайном. А иное оформление диалогового окна, при выборе папки может нарушить единство стиля.

Поэтому написал свой «велосипед» для выбора каталога на WPF. Скачать можно здесь. Не скажу что способ идеальный, если он существует, был бы рад услышать в комментариях. Главное в моем способе: работает и позволяет применить единый стиль для всего приложения.

Программа в примере (без стилей, ничего лишнего), выбирает файлы формата mp3 из выбранного каталога и выводит их в ListBox.

Главное окно:


Выбираем каталог – Указываем локальный диск, затем требуемый каталог:



После выбора каталога, тут я выделил красным выбранный каталог:


Запускаем обработку – Показать mp3 файлы:
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.