• 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"。 完美解决

    缺点:内容不能被选中,单纯展示用

  • 相关阅读:
    九度 1363 欢乐斗地主
    九度 1377 缓变序列
    九度 1376 最近零子序列
    转几篇关于linux下AT&T汇编的帖子
    九度 1358 陈博的平均主义
    九度 1394 五连击数组
    HDU 2817 A sequence of numbers
    HDU 1867 A + B for you again
    HDU 1753 大明A+B
    HDU 1715 大菲波数
  • 原文地址:https://www.cnblogs.com/cnwhm/p/15829554.html
Copyright © 2020-2023  润新知