CefSharp ProgressBar 用于指示下载进度

CefSharp ProgressBar for indicating download progress

我正在制作一个基于 CefSharp 的网络浏览器。当我尝试从 Web 下载文件时,它会提示我保存文件,当我按保存时,它会下载文件但不会显示任何进度百分比。我想添加一个 ProgressBar 来显示下载进度。我该怎么做?

您可以为此使用 IDownloadHandler

假设您的 XAML 中有一个名为 Browser 的浏览器控件和一个名为 BarProgressBar,您可以在后面的代码中执行此操作:

Browser.DownloadHandler = new MyDownloadHandler(Bar);

这是 MyDownloadHandler 的代码:

public class MyDownloadHandler : IDownloadHandler {
    private ProgressBar _bar;

    public MyDownloadHandler(ProgressBar bar) {
        _bar = bar;
    }

    public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) {

    }

    public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) {
        _bar.Dispatcher.Invoke(new Action(() => {
            Debug.Print("{0}/{1} bytes", downloadItem.ReceivedBytes, downloadItem.TotalBytes);

            _bar.Maximum = downloadItem.TotalBytes;
            _bar.Value = downloadItem.ReceivedBytes;
        }));
    }
}