在我的WPF应用程序中托管Windows Shell Explorer

8 wpf controls winforms

是否可以在WPF或WinForms窗口中嵌入Windows资源管理器文件/文件夹浏览器视图?

我基本上想要将文件/文件夹浏览器作为我的应用程序窗口的一部分来托管.我不想重新实现shell提供的内容,特别是像TortoiseSVN这样的shell扩展.

Enr*_*lio 7

据我所知,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)


Eri*_*Law 7

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