我创建了一个简单的Silverlight应用程序,可以从XML实时显示一些文本。使用HTML DIV标签的文本显示。我添加了插件属性window = true,enablehtmlaccess = true,background =透明。

在Silverlight上,我添加了一个按钮”继续“在顶部和底部,在该点击上显示了一些消息。

Silverlight插件基于XML内容调整大小。

我的代码:

mainpage.xaml:

<Grid x:Name="LayoutRoot">
        <StackPanel HorizontalAlignment="Right" VerticalAlignment="Top">
            <Button x:Name="topContinue" Content="Continue" Margin="0,30,30,0" Click="Continue_Click"></Button>
        </StackPanel>
        <StackPanel HorizontalAlignment="Right" VerticalAlignment="Bottom">
            <Button x:Name="bottomContinue" Content="Continue" Margin="0,0,30,30" Click="Continue_Click"></Button>
        </StackPanel>
</Grid>

mainpage.xaml.cs:

在应用程序开始使用:创建HTML DIV:

HtmlDocument _document = HtmlPage.Document;
HtmlElement iDIV = _document.CreateElement("DIV");
iDIV.SetAttribute("id", "divHTMLViewer");
iDIV.SetStyleAttribute("position", "absolute");
iDIV.SetStyleAttribute("z-index", "1");
iDIV.SetStyleAttribute("display", "INLINE");
iDIV.SetStyleAttribute("top", "100px");
iDIV.SetStyleAttribute("height", "0px");
iDIV.SetStyleAttribute("width", "96%");
iDIV.SetStyleAttribute("left", "15px");
iDIV.SetStyleAttribute("text-align", "justify");

HtmlElement body = _document.GetElementsByTagName("BODY")[0] as HtmlElement;
body.RemoveChild(iDIV);
body.AppendChild(iDIV);

设置XML文本:

HtmlElement divHTMLViewer = HtmlPage.Document.GetElementById("divHTMLViewer");
sText = sText.Replace("&lt;", "<").Replace("&gt;", ">");
divHTMLViewer.SetStyleAttribute("display", "none");
divHTMLViewer.SetStyleAttribute("width", "96%");
divHTMLViewer.SetStyleAttribute("top", "100px");
divHTMLViewer.SetStyleAttribute("left", "15px");
divHTMLViewer.RemoveStyleAttribute("color");
divHTMLViewer.RemoveStyleAttribute("fontSize");
divHTMLViewer.SetProperty("innerHTML", sText);
divHTMLViewer.SetStyleAttribute("display", "INLINE");
setSilverlightControlHeight(UILAYOUT.INSTRUCTIONS);

Silverlight插件尺寸增加代码:

isilverlightControlHost.SetStyleAttribute("height", HtmlPage.Window.Eval("document.documentElement.scrollHeight").ToString() + "px");
isilverlightControlHost.SetStyleAttribute("position", "absolute");

所有这些代码在Internet Explorer,Crome和Safari中都很好,但是”继续“仅在Firefox中可见。

那么此代码是否有任何问题?

代码样本:http://lm-bucket-for-forum-post.s3.amazonaws.com/htmlviewersilverlight.zip

工作样本:只需在上述URL中替换为“ testpage.html”的“ .zip”。

请让我知道如何解决?

预先感谢Laxmilal Menaria

有帮助吗?

解决方案

我已经看了您的代码,因为我怀疑它的不是Silverlight,而Silverlight似乎是问题,而是在不同的浏览器中实现CSS。

要在两个浏览器中进行此项工作,您要么需要删除以下代码行:

isilverlightControlHost.SetStyleAttribute("position", "absolute");

或修改代码,以便Firefox忽略了位置样式属性:

isilverlightControlHost.SetStyleAttribute("position", "absolute !important");

我已经使用IE8和FF3.6.12在计算机上尝试了一下 继续 当更改此代码行时,两者都可以看到按钮。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top