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"。 完美解决
缺点:内容不能被选中,单纯展示用