【问题标题】:overlay for WebBrowser control in WPF application?WPF应用程序中WebBrowser控件的覆盖?
【发布时间】:2010-12-04 09:38:30
【问题描述】:

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

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

【问题讨论】:

    标签: wpf browser overlay


    【解决方案1】:

    这会有问题。 WPF 浏览器控件存在“空域”问题。基本上,这意味着您不能在浏览器控件的顶部放置任何内容。

    work around 是把你的覆盖控件放到一个弹出控件中。

    【讨论】:

    • 非常感谢。看起来很有希望。从未听说过“空域”问题。但很高兴看到它可以很容易地解决。你回答我的问题的速度真是令人惊讶。感人的。 :)
    • 我为什么不能让 Karl 发布的“变通”工作?不幸的是,我不能问原来的博主卡尔。源代码下载链接已损坏,但我认为我得到了确切的 XAML(除了我删除了按钮命令)。任何人都可以发布工作副本吗?
    【解决方案2】:

    我找到了解决方法,虽然它有点小技巧。本质上,您将控件创建为 WinForm 控件并使用 WindowsFormsHost 来托管它们。

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

    正如我所说,不理想,但如果你绝望的话,它会起作用。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 感谢您提供该信息。我也去看看。但是现在上面的工作看起来已经足够好了。
      【解决方案4】:

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

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

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

      修复:标准修复是当您触发对它的其他控制时,您可以将 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;
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        • 2011-09-22
        • 2013-04-18
        • 2014-03-28
        相关资源
        最近更新 更多