Как настроить диалог FileOpen для >= Vista?

Я хочу настроить Vista-like OpenFileDialog с помощью настраиваемых элементов управления WinForms и WPF. Я знаю, что вы можете шаблон XP-like OpenFileDialog, но это выглядит довольно уродливо и не удовлетворяет моим требованиям. Я знаю, что вы можете настроить OpenFileDialog с помощью диалогов Ookii или из Microsoft Code Code Pack. Проблема с этим подходом заключается в том, что они не позволяют настраивать элементы управления, только ограниченное подмножество элементов управления (Label, TextBox и т.д.).

Ближайшим, что я получил, является изображение ниже. Используя комбинацию API Code Pack, некоторые изменения в Shell, взломать задание добавления пустых меток для интервала, с кучей уродливого COM, чтобы нарисовать элемент управления непосредственно на OpenFileDialog, я смог приблизиться.

Проблема с этим подходом заключается в том, что мне нужно отключить повторную калибровку в WndProc, потому что в разделе управления в CommonOpenFileDialog есть макет потока/переноса, и вы не можете динамически добавлять/удалять элементы управления при изменении размера или вы получаете катастрофический отказ, если OpenFileDialog уже был показан.

Есть ли какие-либо предложения, помимо того, что я пробовал, или какие-либо сторонние продукты, которые работают в качестве стандартного Vista-OpenFileDialog, но позволяют вставлять пользовательские элементы управления?

[

Я также попробовал перебросить свой собственный, используя ExplorerBrowser из Code Code Pack (как показано на рисунке ниже), но, несмотря на расчесывание COM-интерфейса, не существует способа определить фильтры в ExplorerBrowser.

[

Ответ 1

Подобные вещи можно легко написать с нуля, используя WPF и XAML. При необходимости есть элементы управления для простого подкомпонента, который вы хотите.

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