我需要在我的silverlight应用程序中显示HTML,但无法找到实现它的方法。我无法使用Web浏览器控件,因为它需要能够在浏览器中运行或运行。
有没有人知道这样做的好方法,因为我现在想到的就是在文本上运行替换方法,只需用C#等价物替换标签,例如(<br />
到{{1 }})。
答案 0 :(得分:1)
我这样做的方法是检查应用程序是否在浏览器中运行并相应地更改显示方式。如果在浏览器中运行,我会使用IFrame覆盖应用程序,正如我在本文中所述:http://www.silverlightshow.net/items/Building-a-Silverlight-Line-Of-Business-Application-Part-6.aspx。否则,我使用WebBrowser控件。我有一个控件可以在我的书中附带的源代码中为您完成所有操作,可以从Apress网站下载http://www.apress.com/book/downloadfile/4638。
希望这会有所帮助......
克里斯
答案 1 :(得分:0)
我相信你要找的是HTML Bridge。
编辑我实际上现在不确定如果您正在运行此OOB,您是否仍然可以访问javascript。我将对此进行更多研究,并将进一步更新。我仍然会留下答案,但作为参考。
第二次编辑以下是我发现的内容。从浏览器运行silverlight时禁用HTML Bridge。这会禁用对HTML DOM以及Javascript的访问。但是,根据对this site的评论:
首次安装OOB应用时,HTML Bridge不可用。但是,如果您修改安装应用程序的文件夹中的index.html,只需添加enablehtmlaccess参数,就可以强制它。
有效!
您甚至可以使用HtmlPage类的众所周知的方法创建动态HTML元素。您甚至可以使用Navigate()方法及其“_blank”参数打开新的浏览器窗口。
请记住这些信息是关于SL发布的。可能这可能已经改变,但我对此表示怀疑。因此,您可能想要做的是在SL应用程序的启动中构建一个脚本,以检测您的应用程序是否已用完浏览器。如果是,那么你可能想要一些可以为你修改这个文件的脚本。
答案 2 :(得分:0)
最近有similar question。
我在那里发布了一个链接到一个实现,该实现在Silverlight中解析并显示HTML内联。当然,它只适用于简单的HTML,但也许你可以根据自己的需要进行扩展。