【轉】WPF 與網頁交互(Frame,WebBrowser)


WPF中有個很好的機制,就是Frame,Frame不僅可以像網頁中的Frame一樣加載Wpf的page對象,還可以加載WEB,使用方法:

frame1.Source = new Uri("http://localhost:2613/Default.aspx");

當然也可以用Navigate方法設置Source的Uri,還可以通過設置Content,但是稍微麻煩一點,因為需要創建一個WebBrowser對象作為Content。

 

在WPF界面中放入Frame控件,並設置好Source后,運行,就可以理解看到網頁被嵌入到了Frame中。

 

僅僅是現實網頁並不是我的目的,我需要和網頁交互。

 

在web開發的過程中,可以知道,Javascript或其他腳本語言或者插件都需要通過獲得web的document對象,然后操作這個document對象。因此,沒有例外,我們需要獲得Frame加載的頁面的Document對象。

方法如下:

 

            WebBrowser wb =  (WebBrowser)frame1.Content;

            要獲得Frame加載的網頁的內容就一定需要獲得Frame的Content屬性,frame的Content屬性是Object,但是因為我們加載的是網頁,因此,Content屬性的真實類型是System.Windows.Controls.WebBrowser,雖然VS2008工具欄里沒有WebBrowser控件,但是Frame加載的網頁依然是以WebBrowser類型返回的,也許是Frame能做的事情比較多,因此沒必要再用WebBrowser控件了,但是依然有WebBrowser類來處理網頁對象。

 

            mshtml.HTMLDocumentClass htmldocument = (mshtml.HTMLDocumentClass)wb.Document;

           獲得WebBrowser后,我們就需要獲得WebBrowser中的網頁文檔對象了HTMLDocumentClass,這個類里才具體包含了網頁文檔的具體屬性和方法。WebBrowser對象的網頁文檔對象就是Document屬性返回的對象,因此用上面一句就可以獲得了,但是有個地方要注意,創建項目后默認是沒有mshtml.HTMLDocumentClass引用的,因此手動引用.NET庫里的Microsoft.mshtml程序集。

 

           htmldocument.getElementByIdx("test").setAttribute("value","修改后內容",0);

           接下來的事情就如同用Javascript在WEB中的操作過程了。

 

不得不說,WPF開發上確實比較方便了,在不熟悉的情況下也許比較困難,但是熟悉了WPF,感覺能輕松完成之前在WINFORM里比較困難的操作!WPF中的Frame確實很不錯,好用,之前開發用其加載WPF的PAGE項,能把桌面應用工作機制做得像瀏覽器一樣,現在又發現其可以和WEB如此無縫的結合,WPF確實能將WEB和桌面應用整合得很好!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM