抱歉有点晚了,但我终于可以禁用滚动条了。@Devdude 的提示是关键。
要点是设置overflow = hidden
,但是如何在 WPF 中做到这一点?我使用DependencyObject
以便可以绑定:随时启用和禁用。
首先,您需要添加对mshtml
. 在您的项目中,添加引用 add Microsoft.mshtml
。然后在你的.cs
文件中添加:
using mshtml;
依赖对象
public class WebBrowserUtility : DependencyObject
{
public static readonly DependencyProperty HideScrollBarProperty = DependencyProperty.RegisterAttached(
"HideScrollBar",
typeof(string),
typeof(WebBrowserUtility),
new UIPropertyMetadata(null, HideScrollBarPropertyChanged));
public static string GetHideScrollBar(DependencyObject obj)
{
return (string)obj.GetValue(HideScrollBarProperty);
}
public static void SetHideScrollBar(DependencyObject obj, string value)
{
obj.SetValue(HideScrollBarProperty, value);
}
public static void HideScrollBarPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
WebBrowser browser = obj as WebBrowser;
string str = args.NewValue as string;
bool isHidden;
if (str != null && bool.TryParse(str, out isHidden))
{
browser.HideScrollBar(isHidden);
}
}
}
WebBrowser
扩展,它实际上做了禁用溢出的工作,这仅在文档加载完成后发生WebBrowser
:
public static class WebBrowserExtension
{
public static void HideScrollBar(this WebBrowser browser, bool isHidden)
{
if (browser != null)
{
IHTMLDocument2 document = browser.Document as IHTMLDocument2;
if (document == null)
{
// If too early
browser.LoadCompleted += (o, e) => HideScrollBar(browser, isHidden);
return;
}
//string bodyOverflow = string.Format("document.body.style.overflow='{0}';", isHidden ? "hidden" : "auto");
//document.parentWindow.execScript(bodyOverflow); // This does not work for me...
string elementOverflow = string.Format("document.documentElement.style.overflow='{0}';", isHidden ? "hidden" : "auto");
document.parentWindow.execScript(elementOverflow);
}
}
}
在 XAML 中使用
<WebBrowser ns:WebBrowserUtility.HideScrollBar="True"/>
注意:确保拉伸WebBrowser
以查看全部内容。无论如何,这次scrollbar
将被隐藏。