我正在尝试隐藏webbrowser滚动条,但它仍然可见。
XAML:
<WebBrowser Name="wb" Width="700" Height="600"
OverridesDefaultStyle="False"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollBarVisibility="Hidden" />
谢谢。
答案 0 :(得分:19)
这对我有用:
<WebBrowser LoadCompleted="wb_LoadCompleted"></WebBrowser>
void wb_LoadCompleted(object sender, NavigationEventArgs e)
{
string script = "document.body.style.overflow ='hidden'";
WebBrowser wb = (WebBrowser)sender;
wb.InvokeScript("execScript", new Object[] { script, "JavaScript" });
}
这样你就不需要mshtml
了答案 1 :(得分:8)
不理想,但有效:
将Microsoft.mshtml添加到项目引用中。然后将你的xaml改为:
<WebBrowser Name="wb" Width="700" Height="600"
OverridesDefaultStyle="False"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Hidden"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
LoadCompleted="wb_LoadCompleted"></WebBrowser>
并在您的代码中:
private void wb_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
mshtml.IHTMLDocument2 dom = (mshtml.IHTMLDocument2)wb.Document;
dom.body.style.overflow = "hidden";
}
答案 2 :(得分:4)
....
html{overflow:hidden;}
它应该解决它 或者您可以使用元标记来指定Ie渲染模式
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
答案 3 :(得分:2)
将scroll="no"
添加到html body
标记对我有用,而其他建议没有。
答案 4 :(得分:1)
将Microsoft.mshtml添加到项目引用中。您不需要更改XAML中的任何滚动属性,因为它们不是使用mshtml时控制webbrowser的属性。在LoadCompleted函数中,执行以下操作:
private void webBrowserChat_LoadCompleted(object sender, NavigationEventArgs e)
{
mshtml.IHTMLDocument2 documentText = (IHTMLDocument2)webBrowserChat.Document;
//this will access the document properties
documentText.body.parentElement.style.overflow = "hidden";
// This will hide the scrollbar (Set to "auto" if you want to see when it passes the surfacelimit)
}
答案 5 :(得分:0)
我的WebBrowser控件比可见区域宽16个像素,这是滚动条的宽度。
仅当您的网络浏览器控件触及应用的最右侧时,此功能才有效。 Web浏览器控件不允许其上的其他XAML元素,但您可以使其溢出应用程序的边缘。
我在窗口的Loaded事件处理程序中完成了这个:
private void AppLoaded(object sender, RoutedEventArgs routedEventArgs)
{
WebBrowserView.Width = WebBrowserView.ActualWidth + 16;
}
我发现在页面中注入JavaScript似乎打破了一些页面,滚动条只会在页面完成加载后消失。
答案 6 :(得分:0)
在hidden
标记上分配了body
值的overflow属性解决了此问题。
如果您为body
标记设置了css规则集,请在其中添加以下行:
overflow: hidden
否则,将以下行添加到具体的<body>
标签减速:
style="overflow:hidden"
答案 7 :(得分:0)
重点是设置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
这次都会被隐藏。
答案 8 :(得分:0)
这不是你们所有人都遇到的问题,但是我的搜索将我带到了这里,希望对您有所帮助。我试图使用WPF WebBrowser组件嵌入PDF文档。原来是PDF查看器(从浏览器调用)创建了滚动条!
要解决此问题,请在对PD文件的调用中添加参数。在我的XML中: 来源=“ http://address/file.pdf#toolbar=0&navpanes=0&scrollbar=0”
在其后面的代码中,其格式应为:http://address/file.pdf#toolbar=0&navpanes=0&scrollbar=0
答案 9 :(得分:0)
我用这简单的一行直接定义了文档的主体:
wb.Document.Body.scroll = "no"