我正在开发一个WPF应用程序,该应用程序在其中一个视图中包含Web浏览器。当我运行应用程序时,它工作正常但Web浏览器控件位于我的wpf区域之上。我知道这与AirSpace问题有关。有没有办法克服它?任何帮助将不胜感激。
由于
答案 0 :(得分:2)
WPF 4.5中没有解决该问题。 网络中有一些信息,因此下面提到的属性可用于4.5版本的Web浏览器控件,但该计划已被删除。所以你需要自己处理空域问题。
WebBrowser.CompositionMode = System.Windows.Interop.CompositionMode.Full; WebBrowser.IsRedirected = true;
您可以做的解决方法是将Web浏览器控件的高度设置为零,当其他控件出现在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;
}
答案 1 :(得分:1)
答案 2 :(得分:1)
这是一个众所周知的问题,正如Neeraj所说。但是使用WPF 4.5这似乎已经解决了,所以如果你不介意使用测试版,你应该download Visual Studio 11。
答案 3 :(得分:1)
尝试Chris84898的AirspaceFixer项目。 https://github.com/chris84948/AirspaceFixer
您只需将有问题的控件托管在面板中,即可为您完成繁重的工作。
XAML:
<asf:AirspacePanel x:Name="ap"
FixAirspace="{Binding FixAirspace}"
Grid.Column="0" Grid.Row="1" >
<WebBrowser x:Name="browser" Navigated="Browser_Navigated" />
</asf:AirspacePanel>
要在代码中临时“修复Airspace”(或通过更改依赖项属性):
ap.FixAirspace = true;
// Display a dialog or whatever
ap.FixAirspace = false;
也有一个NuGet软件包。