需要在Windows XP和Windows Vista / 7中创建原生外观的自定义.Net OpenFileDialog。添加新的控件,等等。有没有办法在.Net(WPF专门)中自定义标准的OpenFileDialog?我已经查看了像OpenFileDialogEx这样的解决方案,但所有关于WINAPI挂钩的东西对我来说都是不可接受的。也许有人知道通过Reflection或其他东西提取原生对话的方法?如何实现Windows Vista / 7中的本机OpenFileDialog?它是用WPF编写的吗?提前谢谢。
问候,帕维尔。
答案 0 :(得分:4)
习惯它,因为它需要什么。 OpenFileDialog不是用WPF编写的,该对话框在Windows中作为非托管代码存在。托管包装器在旧版本上使用GetOpenFileName(),在当前版本上使用IFileOpenDialog COM接口。对于后者,IFileDialogCustomize接口旨在自定义对话框。
这些接口只能从C ++程序中轻松使用,C ++程序是shell编程的经典祸害。必须支持XP机器也是一个相当令人头疼的问题,实际上你通过GetOpenFileName()坚持遗留对话。这是代码项目的作用。
答案 1 :(得分:3)
Windows API Code Pack中有一个OpenFileDialog包装器。它可以让你解决很多P /自己调用它的难度。您可以从WPF,Windows Forms等中使用它。
答案 2 :(得分:2)
您可以查看此CodeProject链接。
这是一种有趣的方式来创建您可能想要的任何文件对话框。作者还提供了WPF版本的链接以及用XP编写的原始文章。