2016-07-27 71 views
1

我試圖改變WebBrowser控件的滾動條的寬度。WPF - 設置網頁瀏覽器滾動條的寬度

我嘗試以下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錯誤。

我知道WPFWebBrowser只是一個圍繞WinForm's的包裝,所以我猜這就是爲什麼我得到這個錯誤。

我不想使用外部組件,例如CefSharp或其他瀏覽器。

是否有可能使用本地WebBrowser

感謝

+0

您想要自定義哪個滾動條?頁面的滾動條屬於頁面,改變它們的唯一方法是使用CSS。 –

+0

我正在使用瀏覽器使用adobe閱讀器顯示PDF,但滾動條是網頁瀏覽器 –

回答

0

的WPF WebBrowser控制實際包裝裏面的本地web瀏覽器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滾動條時,它可能會變得非常髒。這可能是值得研究的,但我懷疑它在實踐中可行。

這裏是我想嘗試

  1. 隱藏給予overflow:hidden風格到每個頁面的主體滾動條。您還可以在WindowsFormsHost控件中託管Windows窗體WebBrowser,以便您可以訪問ScrollBarsEnabled屬性(但不幸在WPF控件上不可用)。
  2. 將您的WebBrowser控件旁邊的WPF ScrollBar添加到您想要的樣式中。這實際上可以是UserControl以確保未來的可重用性。
  3. 將WPF ScrollBar的最大值設置爲HTML頁面的ScrollHeight。
  4. 訂閱WPF ScrollBar的滾動事件。將滾動事件發送到HTML頁面。您還需要以另一種方式來保持WPF ScrollBar與使用觸摸,鼠標滾輪或鍵盤按鈕發生的滾動同步。

我現在不在計算機上,所以不能幫助數字3和4,但它應該是可以的。再次,你可以碰到使用一些自定義滾動(jQuery)的頁面,但希望這可以讓你開始。

+0

真的很感謝您的回答。我明天會研究它。我不會現在如果它會工作,因爲我不會顯示任何HTML。它僅用作使用Acrobat Reader的PDF查看器 –