抱歉有点晚了,但我终于能够禁用滚动条了。@Devdude的提示是关键。
主要的方法是设置overflow = hidden
,但在WPF中如何实现呢?我使用了DependencyObject
,这样我就可以随时绑定:启用和禁用。
首先,您需要添加对mshtml
的引用。在您的项目中,添加引用Microsoft.mshtml
。然后在您的.cs
文件中添加:
using mshtml;
依赖对象(DependencyObject)。
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)
{
browser.LoadCompleted += (o, e) => HideScrollBar(browser, isHidden);
return;
}
string elementOverflow = string.Format("document.documentElement.style.overflow='{0}';", isHidden ? "hidden" : "auto");
document.parentWindow.execScript(elementOverflow);
}
}
}
在XAML中使用
<WebBrowser ns:WebBrowserUtility.HideScrollBar="True"/>
注意:确保将
WebBrowser
拉伸以查看整个内容。无论如何,这次将隐藏
scrollbar
。