空域问题

项目中有一个小功能:在弹出窗体中显示一个网页内容

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

此库不能完美解决空域问题,只有等微软大爷彻底解决了

  1. 下载源码
  2. 自行编译
  3. 项目引用
<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>

 搞定!

 

posted @ 2019-01-06 18:15  [在河之洲]  阅读(389)  评论(0编辑  收藏  举报