空域问题
项目中有一个小功能:在弹出窗体中显示一个网页内容
How to do it ?
当然得请出:WebBrowser
然后给他一个url地址显示就完了。如何故事到这,就没有今天你看到这篇东西了
首先交待一下我项目中场景:
我使用的是谷歌开源控件materialDesign
并用他的模台对话框中显示一个usercontrol,WebBrower就在这个usercontrol中
<materialDesign:DialogHost Identifier="RootDialog" x:Name="rootDialog" > </materialDesign:DialogHost>
显示userControl代码就不贴出来了
我给WebBrower赋值了一个任意可访问网址,然后F5运行
理论上来说,应该显示我期望的网页内容
实际结果是一片苍白
各种排查方法,最终未果。至少从代码上来说,应该木有问题,毕竟就几行代码。微软大爷官网也就那几句
用万能google了一把:"airspace" issues in WPF applications这行字映入眼帘
尼玛呀,微软大爷,你坑害我等呀,(此处省略123456789字)
空域问题原因直接搜索即有答案,此处不再赘述
解决之道
利用第三方库解决空域问题
Microsoft.DwayneNeed:
https://microsoftdwayneneed.codeplex.com/
Mitigating "airspace" issues in WPF applications
此库不能完美解决空域问题,只有等微软大爷彻底解决了
- 下载源码
- 自行编译
- 项目引用
<interop:AirspaceDecorator Grid.Row="2" Grid.ColumnSpan="4" Grid.Column="1" Margin="0,7,0,0" Grid.RowSpan="6" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" AirspaceMode="Redirect" Background="Red" IsInputRedirectionEnabled="True" IsOutputRedirectionEnabled="True"> <WebBrowser HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Source="http://www.xxxx.com" /> </interop:AirspaceDecorator>
搞定!
努力到无能为力,拼搏到感动自己