2

問題: wpf webbrowser controll と FTP サーバーがあります。コード内:

wpfWebbrowserControll.Soure = new Uri (ftpUri)

次に、wpfWebbrowserControllすべてのFTPサーバーのコンテンツが表示されますが、フォルダーをクリックすると、Windowsエクスプローラーがフォルダーのコンテンツを含む新しいウィンドウを開きます(問題です)

私は自分のコントロールだけですべてを行う必要があります!

Ps: いつwpfWebbrowserControll.Soure = new Uri("C:\\")- 私が欲しいようにすべてが機能します

4

1 に答える 1

2

WebBrowserがftpページをロードすると、実際にはIShellFolderViewDual3 COMインターフェイスを実装するCOMオブジェクトが表示されるため、DefaultVerbをインターセプトしてWebBrowserソースを更新するというアイデアがあります。

private void browser_LoadCompleted(object sender, NavigationEventArgs e) {
    dynamic document = this.browser.Document;

    document.DefaultVerbInvoked += new Func<bool>(() => {
        this.Dispatcher.BeginInvoke(new Action(() => {
            if ((int) document.SelectedItems.Count > 0) {
                var selectedItem = document.SelectedItems.Item(0);
                this.browser.Source = new Uri((string) selectedItem.Path);
            }
        }));
        return false;
    });
}

<WebBrowser
   x:Name="browser"
   LoadCompleted="browser_LoadCompleted"
   Source="ftp://ftp.drweb.com/pub/drweb/" />
于 2012-10-03T16:32:38.203 に答える