申し訳ありませんが少し遅れて、私は最終的には、スクロールバーを無効にすることができる午前:LoadCompleted機能では次の操作を行います。 @Devdudeのヒントが鍵でした。
主なポイントはoverflow = hidden
を設定することですが、WPFでそれを行う方法は? DependencyObject
を使用してバインドできるようにしました。必要に応じて有効と無効を切り替えることができます。
まず、mshtml
への参照を追加する必要があります。プロジェクトで、参照を追加するMicrosoft.mshtml
を追加します。次に、あなたの.cs
ファイルの追加:
:実際に
WebBrowser
ドキュメントの読み込みが完了した後にのみ起こるオーバーフローを、無効にする作業を行う
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
拡張は、
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