CefSharp ChromiumWebBrowser 自适应内容高度,并随页面滚动条滚动
业务需求:原生WPF页面 加WebBrowser布局,原页面已有滚动条,加了Browser后也有滚动条。
搜了无数Html转xaml的方案 打算用richTextBox实现。 搜到的库已经是十年前的framework框架了。
拆分业务需求:
1.隐藏滚动条
2.内容随外部wpf页面的滚动
3.自适应内容高度
搜索到这篇文章给我启发:https://www.cnblogs.com/Lulus/p/7998210.html
于是想到用js禁用滚动条,并拿到内容的高度。
public MainWindow()
{
InitializeComponent();
ChromiumWebBrowser.FrameLoadEnd += ChromiumWebBrowser_FrameLoadEnd;
}
private async void ChromiumWebBrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
if (e.Frame.IsMain)
{
e.Browser.MainFrame.ExecuteJavaScriptAsync("document.body.style.overflow = 'hidden'");
var documentHeight = (await e.Browser.MainFrame.EvaluateScriptAsPromiseAsync("return document.body.scrollHeight"))?.Result;
if (documentHeight != null)
{
Dispatcher.Invoke(() =>
{
ChromiumWebBrowser.Height = (int)documentHeight;
});
}
}
}
这样就剩下webBrowser随页面的滚动条滚动的问题了。。
又是走了无数弯路,找虚拟树中的ScrollViewer ,找MouseWheel时间把它Raise出去,都失败了。
最后想到只是展示用,我干脆让你穿透就好了 于是给ChromiumWebBrowser加上IsHitTestVisible="False"。 完美解决
缺点:内容不能被选中,单纯展示用

浙公网安备 33010602011771号