這篇文章主要介紹如何解決WPF中空域問題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
空域問題是由于Winform與WPF在底層渲染機(jī)制上有所區(qū)別而導(dǎo)致的。多數(shù)情況下,開發(fā)者為了實(shí)現(xiàn)不規(guī)則的窗體并承載Winform控件時(shí),遇到此類問題。當(dāng)WPF窗體設(shè)置為允許透明(也就是AllowsTransparency=True)時(shí),Winform Control 會(huì)出現(xiàn)不顯示等情況,為了避免此問題,許多UI框架在實(shí)現(xiàn)不規(guī)則窗體時(shí),用Win32 API 去實(shí)現(xiàn)不規(guī)則窗體的一些特效,比如透明,圓角等,這樣WPF窗口的AllowsTransparency屬性就可以設(shè)為FALSE,從而繞過了空域問題。但對(duì)于沒有接觸過Window底層開發(fā)的同學(xué)開發(fā)成本會(huì)比較高,而且有些特殊情況下,必須設(shè)AllowsTransparency為True時(shí),該如何解決?
第一種也是網(wǎng)絡(luò)上最普遍的方法,簡(jiǎn)單說就是內(nèi)嵌窗體,這個(gè)方法就不再說明。
第二種也是我解決此問題的方法,使用第三方庫(kù)解決空域的問題
利用第三方庫(kù)解決空域問題
Microsoft.DwayneNeed(
https://microsoftdwayneneed.codeplex.com/
),這個(gè)庫(kù)在其項(xiàng)目介紹里也寫到
Mitigating "airspace" issues in WPF applications.
可能看出這個(gè)庫(kù)也不能完美的解決空域的問題,也只能等微軟去完善此問題了。
以Winform中強(qiáng)大的WebBrower為例,簡(jiǎn)單說一下使用方法:
新建WPF窗體項(xiàng)目并添加Microsoft.DwayneNeed.dll與Microsoft.DwayneNeed.Win32.dll的引用
添加 xmlns:airspace="clr-namespace:Microsoft.DwayneNeed.Interop;assembly=Microsoft.DwayneNeed"的聲明
<airspace:AirspaceDecorator AirspaceMode="Redirect" IsInputRedirectionEnabled="True" IsOutputRedirectionEnabled="True"> <WindowsFormsHost Name="FormsHost"> <winform:WebBrowser/> </WindowsFormsHost> </airspace:AirspaceDecorator>
以上是“如何解決WPF中空域問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁名稱:如何解決WPF中空域問題-創(chuàng)新互聯(lián)
文章源于:http://jinyejixie.com/article42/digjhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、定制開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站收錄、用戶體驗(yàn)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容