在.Net中自定义OpenFileDialog

Pav*_*vel 7 .net wpf windows-xp openfiledialog windows-7

需要在Windows XP和Windows Vista/7中创建原生外观的自定义.Net OpenFileDialog.添加新的控件,等等.有没有办法在.Net(WPF专门)中自定义标准的OpenFileDialog?我已经查看过像OpenFileDialogEx这样的解决方案,但所有关于WINAPI挂钩的东西对我来说都是不可接受的.也许有人知道通过Reflection或其他东西提取原生对话的方法?如何实现Windows Vista/7中的本机OpenFileDialog?它是用WPF编写的吗?提前致谢.

此致,帕维尔.

Han*_*ant 5

习惯它,因为它需要。OpenFileDialog 不是用 WPF 编写的,对话框在 Windows 中作为非托管代码存在。托管包装器在旧版本上使用 GetOpenFileName(),在当前版本上使用 IFileOpenDialog COM 接口。对于后者,IFileDialogCustomize 接口旨在自定义对话框。

这些接口只有在 C++ 程序中才易于使用,这是 shell 编程的经典祸害。必须支持 XP 机器也是一个相当令人头疼的问题,实际上您通过 GetOpenFileName() 被困在旧对话框中。这就是代码项目所做的。