可以给我一个提示如何在我的 WPF 应用程序的 WebBrowser 控件中显示“覆盖控件”吗?我想将导航图形显示为叠加层,以便用户可以选择一个功能,并且导航控件在选择后消失。
目前还没有真正体验过WPF。:( 我不知道从哪里开始。任何提示或链接都会很棒。谢谢
这会有问题。WPF 浏览器控件存在“空域”问题。基本上,这意味着您不能在浏览器控件的顶部放置任何内容。
解决方法是将覆盖的控件放入弹出控件中。
我找到了解决这个问题的方法,尽管它有点像 hack。本质上,您将控件创建为 WinForm 控件并使用 WindowsFormsHost 来托管它们。
WindowsFormsHost 将位于 Web 浏览器控件之上。
正如我所说,并不理想,但如果你绝望的话,它会起作用。
WPF Web浏览器控件的Air空间很难通过,但是,您可以在显示动画时将Web浏览器控件的高度最小化,并在您的任务结束时重新设置高度。
此问题的更好解决方法是处理浏览器控件的高度。在下面找到一个简单的场景。
假设您在主窗口中有一个 Web 浏览器控件。当您执行某些操作时,例如:单击一个按钮,您将拥有另一个位于 MainWindow 上方的用户控件。但是,由于 Airspace 问题,Web 浏览器不在其父控件中,而是在您的控件之上。
修复:标准修复是当您触发对它的其他控制时,您可以将 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;
}
有一个使用 Chromium的基于 wpf 的浏览器。它应该允许您像对待任何其他 wpf 对象而不是 activex 浏览器控件一样对待它。