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

缺點:內容不能被選中,單純展示用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM