WPF System.Windows.Controls.WebBrowser不呈现链接按钮

时间:2012-05-16 19:35:13

标签: html css webbrowser-control doctype x-ua-compatible

我有一个网页,我在桌面应用程序中的WPF WebBrowser控件中显示。我刚刚更新了网页,使用样式按钮而不是默认的灰色按钮,从asp.net Button类型更改为asp.net LinkBut​​ton并应用CSS样式:

    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:

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

2 个答案:

答案 0 :(得分:0)

默认情况下使用的是兼容模式,而不是尊重样式。将其更改为

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

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

修好了。

答案 1 :(得分:0)

默认情况下,WPF WebBrowser将以IE7兼容模式运行。 如果您可以控制该网站,则可以添加&lt; meta http-equiv =“X-UA-Compatible”...&gt;标签,如此处的其他答案中所述。 我尝试在运行WPF应用程序+ Web应用程序的解决方案中执行此操作。 客户端计算机正在运行IE11。 但是,添加元标记并未解决与用户代理字符串相关的问题。 WebBrowser仍然报告它是IE7。 我找到的解决方案是在注册表中配置WebBrowser,如下所示:

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