空域問題是由于Winform與WPF在底層渲染機制上有所區別而導致的。多數情況下,開發者為了實現不規則的窗體并承載Winform控件時,遇到此類問題。當WPF窗體設置為允許透明(也就是AllowsTransparency=True)時,Winform Control 會出現不顯示等情況,為了避免此問題,許多UI框架在實現不規則窗體時,用Win32 API 去實現不規則窗體的一些特效,比如透明,圓角等,這樣WPF窗口的AllowsTransparency屬性就可以設為FALSE,從而繞過了空域問題。但對于沒有接觸過Window底層開發的同學開發成本會比較高,而且有些特殊情況下,必須設AllowsTransparency為True時,該如何解決?
利用第三方庫解決空域問題
Microsoft.DwayneNeed(
https://microsoftdwayneneed.codeplex.com/
),這個庫在其項目介紹里也寫到
Mitigating "airspace" issues in WPF applications.
可能看出這個庫也不能完美的解決空域的問題,也只能等微軟去完善此問題了。
以Winform中強大的WebBrower為例,簡單說一下使用方法:
<airspace:AirspaceDecorator AirspaceMode="Redirect" IsInputRedirectionEnabled="True" IsOutputRedirectionEnabled="True"> <WindowsFormsHost Name="FormsHost"> <winform:WebBrowser/> </WindowsFormsHost></airspace:AirspaceDecorator>
以上所述是小編給大家介紹的解決WPF中空域問題(Airspace issuse),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!
新聞熱點
疑難解答
圖片精選