對不起有點晚,但我終於可以禁用滾動條了。關鍵是@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)
{
// 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
。
這個工作適合你嗎? – Sisyphe
不,它不起作用。 – Alvin
什麼不適合你? – Sisyphe