2012-05-16 106 views
1

我有一個網頁,我在桌面應用程序中的WPF WebBrowser控件中顯示。我剛剛更新從一個asp.net按鈕類型更改爲一個asp.net的LinkBut​​ton和應用CSS樣式,使用樣式按鈕,而不是默認的灰色按鈕的網頁:WPF System.Windows.Controls.WebBrowser不呈現鏈接按鈕

a.btnSave 
    { 
     background: url(Resources/Images/btnSave.png) no-repeat 0 0; 
     display:inline-block; 
     width: 75px; 
     height: 23px; 
     text-indent: -9999px; 
    } 
    a.btnSave:hover {background-position: 0 -23px;} 

    a.btnCancel 
    { 
     background: url(Resources/Images/btnCancel.png) no-repeat 0 0; 
     display:inline-block; 
     width: 75px; 
     height: 23px; 
     text-indent: -9999px; 
    } 
    a.btnCancel:hover {background-position: 0 -23px;} 

    a.btnReset 
    { 
     background: url(Resources/Images/btnReset.png) no-repeat 0 0; 
     display:inline-block; 
     width: 75px; 
     height: 23px; 
     text-indent: -9999px; 
    } 
    a.btnReset:hover {background-position: 0 -23px;} 

...

<asp:LinkButton ID="btnSave" runat="server" CssClass="btnSave" OnClick="btnSave_Click" OnClientClick="OnSubmit()" UseSubmitBehavior="False" Text=" " /> 
<asp:LinkButton ID="btnCancel" runat="server" CssClass="btnCancel" OnClick="btnCancel_Click" OnClientClick="OnSubmit()" CausesValidation="False" Text=" " /> 
<asp:LinkButton ID="btnReset" runat="server" CssClass="btnReset" OnClick="btnReset_Click" OnClientClick="OnSubmit()" CausesValidation="False" Text=" " /> 

當我在IE 8(或Firefox)中查看頁面時,按鈕顯示正確。但是,當我在應用程序內的WebBrowser控件中加載頁面時,按鈕缺失。如果我將鼠標懸停在應該放置的位置上,我不會收到手形圖標,因此不僅僅是圖像未加載。當我查看源代碼時,錨定標記位於那裏,如果我複製源並將其保存到HTML文件並在瀏覽器窗口中打開它,則它們確實顯示正確。在過去,我遇到過WebBrowser沒有像瀏覽器一樣顯示浮動div的問題,而必須切換到表格佈局。它不支持內嵌塊顯示類型或什麼?

如果它的事項,這是申報頁面的文檔類型:它在默認情況下這是不尊重的方式使用兼容模式

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
+0

我發現,如果我把兼容性視圖在IE,按鈕消失。這可能是問題嗎? – xr280xr

+0

它使用兼容模式,如果我使用註冊表鍵或在我的頁面上設置,則會出現按鈕!這給我留下了這些問題:我的!DOCTYPE不是指定使用最新的HTML5/CSS3標準嗎?如果是這樣,我的代碼有什麼問題?爲什麼導致它正常工作,但是<!DOCTYPE html>本身沒有? – xr280xr

+0

新標籤並不真正相關。我們不是在這裏討論HTML5或CSS3。 – BoltClock

回答

0

。它改變到

<meta http-equiv="X-UA-Compatible" content="IE=9" /> 

<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 

固定它。

+0

如何解決它在Firefox中? –

0

默認情況下,WPF WebBrowser將以IE7兼容模式運行。 如果您可以控制該網站,您可以添加一個< meta http-equiv =「X-UA兼容」... >標記,如其他答案中所述。 我試圖在運行WPF應用程序+ Web應用程序的解決方案中執行此操作。 客戶機正在運行IE11。 雖然添加元標記並未解決與用戶代理字符串相關的問題。 WebBrowser仍然報告它是IE7。 我找到的解決方案是配置這樣在註冊表中的web瀏覽器:

Registry.SetValue(
@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", 
AppDomain.CurrentDomain.FriendlyName, 
int.MaxValue);