You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CefSharp WPF:如何隐藏滚动条并修改ChromiumWebBrowser背景

问题描述

我在WPF测试应用中使用CefSharp查看本地PDF文件,已通过在文件路径后追加#toolbar=0移除了PDF工具栏,现在需要实现两个需求:

  1. 修改ChromiumWebBrowser的背景色
  2. 隐藏PDF的滚动条

界面截图:
Interface

XAML代码

<Grid >
      <Grid  Margin="10">
          <cef:ChromiumWebBrowser Name="pdfBrowser" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></cef:ChromiumWebBrowser>
      </Grid>
  </Grid> 

后台代码

public MainWindow()
 {
     InitializeComponent();

 
     pdfBrowser.Address = @"C:\Users\User\Desktop\USA-Pickleball-Official-Rulebook-2024-v1.pdf#toolbar=0";
 }
解决方案

一、修改ChromiumWebBrowser背景色

有两种可靠方式实现背景色统一:

1. 直接设置控件背景

在XAML中给ChromiumWebBrowser添加Background属性,直接指定背景色,覆盖控件加载前的空白区域:

<cef:ChromiumWebBrowser Name="pdfBrowser" 
                        HorizontalAlignment="Stretch" 
                        VerticalAlignment="Stretch"
                        Background="#F0F0F0"> <!-- 替换为你需要的颜色值 -->
</cef:ChromiumWebBrowser>

2. 注入CSS同步PDF容器背景

如果PDF加载后容器背景与控件背景不一致,可在PDF加载完成后注入CSS,强制统一背景:
在后台代码中订阅FrameLoadEnd事件,执行样式注入:

public MainWindow()
{
    InitializeComponent();
    pdfBrowser.FrameLoadEnd += PdfBrowser_FrameLoadEnd;
    pdfBrowser.Address = @"C:\Users\User\Desktop\USA-Pickleball-Official-Rulebook-2024-v1.pdf#toolbar=0";
}

private async void PdfBrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
    if(e.Frame.IsMain)
    {
        var css = @"
            body, .pdfViewerContainer {
                background-color: #F0F0F0 !important;
            }";
        await pdfBrowser.GetMainFrame().ExecuteJavaScriptAsync($"var style = document.createElement('style'); style.textContent = `{css}`; document.head.appendChild(style);");
    }
}

二、隐藏滚动条

推荐两种方式结合使用,确保兼容性:

1. URL参数尝试(快速但兼容性有限)

在PDF路径后追加&scrollbar=0,部分Chromium内置PDF查看器支持该参数:

pdfBrowser.Address = @"C:\Users\User\Desktop\USA-Pickleball-Official-Rulebook-2024-v1.pdf#toolbar=0&scrollbar=0";

2. CSS注入强制隐藏(稳定兼容)

通过注入CSS强制隐藏页面滚动条,这是最可靠的方式,可和背景色注入合并:

private async void PdfBrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
    if(e.Frame.IsMain)
    {
        var css = @"
            body, html {
                overflow: hidden !important; /* 隐藏滚动条 */
            }
            body, .pdfViewerContainer {
                background-color: #F0F0F0 !important; /* 同步背景色 */
            }";
        await pdfBrowser.GetMainFrame().ExecuteJavaScriptAsync($"var style = document.createElement('style'); style.textContent = `{css}`; document.head.appendChild(style);");
    }
}

额外提示

  • 本地路径需添加@符号避免转义错误,你的代码中已修正为@"C:\Users\..."
  • 建议使用最新稳定版CefSharp,避免旧版本的API兼容性问题

内容的提问来源于stack exchange,提问作者SirTalllPaul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:31:11