Przepraszam za późno, ale w końcu mogę wyłączyć pasek przewijania. Wskazówka z @Devdude była kluczem.
Głównym celem jest ustawienie overflow = hidden
, ale jak to zrobić w WPF? Użyłem DependencyObject
, dzięki czemu mogę wiązać: włączać i wyłączać, kiedy tylko chcę.
Przede wszystkim należy dodać odniesienie do mshtml
. W swoim projekcie dodaj odniesienie dodaj Microsoft.mshtml
. Następnie w pliku .cs
dodać:
using mshtml;
The 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);
}
}
}
The WebBrowser
rozszerzenie, które faktycznie działa, aby wyłączyć przelewu, który zdarza się tylko po WebBrowser
Dokument ładowania jest zakończony:
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);
}
}
}
Do użycia w XAML
<WebBrowser ns:WebBrowserUtility.HideScrollBar="True"/>
Uwaga: Upewnij się, że naciągasz WebBrowser
, aby zobaczyć całą zawartość. Bez względu na to, tym razem scrollbar
zostanie ukryty.
Czy ta praca była dla Ciebie? – Sisyphe
Nie, to nie działa. – Alvin
Co nie działało dla ciebie? – Sisyphe