在WPF应用程序中覆盖WebBrowser控件?

时间:2009-10-06 19:41:14

标签: wpf browser overlay

可以给我一个提示如何在我的WPF应用程序中的WebBrowser控件中显示“叠加控件”吗?我想将导航图形显示为叠加,以便用户可以选择一个功能,并在选择导航控件后消除。

目前在WPF中没有真正的经验。 :(我不知道从哪里开始。任何提示或链接都会很棒。谢谢

4 个答案:

答案 0 :(得分:5)

这会有问题。 WPF浏览器控件存在“空域”问题。基本上,它意味着你不能把任何东西放在浏览器控件的顶部。

work around是将重叠的控件放入弹出控件中。

答案 1 :(得分:1)

我找到了一条过去的方法,虽然这有点像黑客。基本上,您可以将控件创建为WinForm控件,并使用WindowsFormsHost来托管它们。

WindowsFormsHost将位于Web浏览器控件之上。

正如我所说的那样,如果你绝望,那就不太理想,但会有效。

答案 2 :(得分:0)

wpf based browser使用Chromium。它应该允许你像对待任何其他wpf对象而不是activex浏览器控件一样对待它。

答案 3 :(得分:0)

很难通过WPF网页浏览器控制的Air空间,但是,您可以在显示动画时最小化Web浏览器控件的高度,并在任务结束时再次设置高度。

此问题的更好解决方法是处理浏览器控件的高度。找到下面的简单方案。

假设您在Mainwindow中有一个Web浏览器控件。当您执行某些操作时,例如:单击一个按钮,您将拥有MainWindow上方的另一个用户控件。但是,由于Airspace问题,Web浏览器不会位于其父控件中并且处于您的控制之上。

FIX:标准修复是您可以在触发其他控件时将Web浏览器的高度设置为零,具体取决于您的方案。下面是一个示例实现。

在MainWindow.Xaml中包含事件。

Activated="Window_Activated"
Deactivated="Window_Deactivated"

在Xaml.cs中,通过设置高度来处理场景。

private void Window_Activated(object sender, EventArgs e)
{
    wb.Height = double.NaN;
}

private void Window_Deactivated(object sender, EventArgs e)
{
    wb.Height = 0;
}