我正在尝试更改WebBrowser
控件滚动条的宽度。
我尝试按照this回答更改ScrollViewer
这样的内容:
<WebBrowser Grid.Row="0" Grid.RowSpan="5" Grid.Column="0" Height="1993" Margin="3,3,0,3">
<ScrollViewer>
<ScrollViewer.Resources>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">100</sys:Double>
</ScrollViewer.Resources>
</ScrollViewer>
</WebBrowser>
但我收到The type 'WebBrowser' does not support direct content
错误。
我知道WebBrowser
的{{1}}只是WPF
的封套,所以我猜这就是我收到此错误的原因。
我不想使用WinForm's
或其他浏览器等外部组件。
是否可以使用原生CefSharp
?
谢谢
答案 0 :(得分:0)
WPF WebBrowser
控件实际上将本机WebBrowser ActiveX控件包装在其中。这并没有真正改变答案,但很高兴知道。
正如Reza Aghaei已经评论过的那样,滚动条不是WPF控件,不能像WPF应用程序中的其他滚动条那样进行修改。但是,我不认为您可以使用CSS更改IE滚动条的宽度,因为样式仅限于着色:
scrollbar-base-color: #C0C0C0;
scrollbar-base-color: #C0C0C0;
scrollbar-3dlight-color: #C0C0C0;
scrollbar-highlight-color: #C0C0C0;
/* etc */
有两种可能性浮现在脑海中。您可以使用其中一个jQuery滚动条库来自定义滚动条,或者使用原生WPF ScrollBar
代替。
使用jQuery滚动条会强制您在用户访问的每个页面上注入javascript,当网站已经使用自定义jQuery滚动条时,它可能会变得非常脏。这可能值得研究,但我怀疑它在实践中是否会运作良好。
以下是我要尝试的内容
overflow:hidden
样式赋予每个页面的正文来隐藏滚动条。您还可以在WebBrowser
控件中托管Windows窗体WindowsFormsHost
,这样您就可以访问ScrollBarsEnabled
属性(遗憾的是,WPF控件上没有该属性)。ScrollBar
控件旁边添加WPF WebBrowser
并按照您希望的方式设置样式。实际上,这可能是UserControl
,以确保未来的可重用性。ScrollBar
的最大值设置为HTML页面的ScrollHeight。ScrollBar
的滚动事件。将滚动事件发送到HTML页面。您还需要以另一种方式执行此操作,以使WPF ScrollBar
与使用触摸,鼠标滚轮或键盘按钮发生的滚动同步。我现在不在电脑上,所以无法帮助数字3和4,但它肯定是可能的。再次,你可以遇到使用一些自定义滚动(jQuery)的页面,但希望这可以让你开始。