是否可以在WPF或WinForms窗口中嵌入Windows资源管理器文件/文件夹浏览器视图?
我基本上想要将文件/文件夹浏览器作为我的应用程序窗口的一部分来托管.我不想重新实现shell提供的内容,特别是像TortoiseSVN这样的shell扩展.
据我所知,Windows Forms和WPF中没有开箱即用的文件/文件夹浏览器控件.
但是,有商业第三方控件提供类似Windows资源管理器的界面来浏览磁盘上的文件和文件夹.看看LogicNP的这些产品:
或者,您可以在WPF中托管Windows窗体WebBrowser控件并使用它来浏览文件系统,因为它与Windows shell集成在一起.
在XAML中,您可以执行以下操作:
<Window x:Class="Samples.FilesystemBrowser"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
Title="Filesystem Browser">
<StackPanel>
<WindowsFormsHost>
<wf:WebBrowser Url="C:\" />
</WindowsFormsHost>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
请注意,在.NET 3.5 SP1中, Microsoft添加了本机WPF WebBrowser控件,因此您可以选择使用它:
<Window x:Class="Samples.FilesystemBrowser"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Filesystem Browser">
<StackPanel>
<WebBrowser Source="C:\" />
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
Windows Vista的Shell引入了一个实现IExplorerBrowser接口的新控件; 这是在应用程序中托管Windows Shell文件系统视图的推荐方法.使用.NET构建应用程序的开发人员可以使用Windows API CodePack for .NET中提供的ExplorerBrowser控件的封装版本.
请注意,此界面仅适用于Windows Vista及更高版本.如果您的应用程序需要在早期的Windows版本上运行,则需要回退到这些平台上的旧WebOC实现.
http://msdn.microsoft.com/en-us/library/bb761909(VS.85).aspx http://code.msdn.microsoft.com/WindowsAPICodePack
由于此处描述的Win7问题,建议不要托管Web浏览器控件:http://blogs.msdn.com/ieinternals/archive/2009/12/30/Windows-7-Web-Browser-Control-will-not -browse文件,system.aspx