空域問題是因爲Winform與WPF在底層渲染機制上有所區別而致使的。多數狀況下,開發者爲了實現不規則的窗體並承載Winform控件時,遇到此類問題。當WPF窗體設置爲容許透明(也就是AllowsTransparency=True)時,Winform Control 會出現不顯示等狀況,爲了不此問題,許多UI框架在實現不規則窗體時,用Win32 API 去實現不規則窗體的一些特效,好比透明,圓角等,這樣WPF窗口的AllowsTransparency屬性就能夠設爲FALSE,從而繞過了空域問題。但對於沒有接觸過Window底層開發的同窗開發成本會比較高,並且有些特殊狀況下,必須設AllowsTransparency爲True時,該如何解決?網絡
Microsoft.DwayneNeed(
https://microsoftdwayneneed.codeplex.com/
),這個庫在其項目介紹裏也寫到app
Mitigating "airspace" issues in WPF applications.框架
可能看出這個庫也不能完美的解決空域的問題,也只能等微軟去完善此問題了。
以Winform中強大的WebBrower爲例,簡單說一下使用方法:spa
<airspace:AirspaceDecorator AirspaceMode="Redirect" IsInputRedirectionEnabled="True" IsOutputRedirectionEnabled="True"> <WindowsFormsHost Name="FormsHost"> <winform:WebBrowser/> </WindowsFormsHost> </airspace:AirspaceDecorator>
這種方法是否是使用起來簡單多了呢? 若是你有更好的解決方法,也要給你們分享哦!.net
互操做性 https://msdn.microsoft.com/zh-cn/library/aa970688.aspx
使用內嵌窗體解決空域問題 http://blog.csdn.net/hikaliv/article/details/5922871
Microsoft.DwayneNeed https://microsoftdwayneneed.codeplex.com/code