C# wpf WebBrowser遮擋上層UI的解決辦法

大家都知道的,在wpf中引用WebBrowser是一個有獨立句柄的窗口。

這樣的話,wpf的UI就無法對齊進行覆蓋,這裏有一個折中的解決方案,在需要覆蓋WebBrowser時,對其進行截圖並隱藏控件,把他所佔用的位置用一個Image替代,並將圖片設置到Image上面,隱藏覆蓋UI時,再把Image隱藏,WebBrowser顯示出來就行了!

本文中需要的截圖 我已經在前面發過文章
http://blog.csdn.net/aiqinxuancai/article/details/50541824

這裏是xaml,我是用在wpf中,但是使用的是Forms中的控件,具體請找相關文章查看 關鍵字”WindowsFormsIntegration”

<Grid Background="#00000000" HorizontalAlignment="Right" Width="615" Margin="-3,0,0,-3">
    <Image x:Name="imageResource" Margin="2,0,-2,0" />

    <WindowsFormsHost x:Name="webResourceHost" Margin="2,0,-2,0">
        <web:ExtendedWebBrowser x:Name="webResource" BeforeNavigate="webResource_BeforeNavigate" BeforeNewWindow="webResource_BeforeNewWindow" DocumentCompleted="webResource_DocumentCompleted" />
    </WindowsFormsHost>
</Grid>

代碼中使用

//隱藏並用Image替代WebBrowser
imageResource.Source = WebScreenshot.BrowserSnapShot(webResource);
webResourceHost.Visibility = Visibility.Hidden;

//------------------------------

//恢復WebBrowser
imageResource.Source = null;
webResourceHost.Visibility = Visibility.Visible;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章