如何在Silverlight应用程序中显示HTML?

7

我需要在我的Silverlight应用程序中显示一些基本的HTML(例如一些段落、无序列表和超链接)。我该如何操作?

使用哪个控件?

2个回答

7

首先可以尝试这个链接:http://www.wintellect.com/CS/blogs/jprosise/archive/2009/12/22/silverlight-4-s-new-html-hosting-support.aspx

以下是相关内容:

Silverlight 4 带来的新功能之一是能够在 Silverlight 控件内部托管 HTML 内容。这种支持不仅限于静态 HTML 内容;内容可以是交互式的,可以包括脚本。甚至可以是 Flash 内容或包含其他 Silverlight 控件的内容。

要在 Silverlight 中托管 HTML 内容,可以使用 WebBrowser 控件或 HtmlBrush。一种显示 HTML 内容的方法是启动 WebBrowser 控件并将其指向 URL:

<WebBrowser x:Name="WebBrowserControl" Source="http://www.bing.com" />

另一种方法是调用NavigateToString并将内容字符串传递给WebBrowser控件:
WebBrowserControl.NavigateToString("<h1>Hello, Silverlight</h1>");

HTML托管不适用于浏览器应用程序(仅适用于独立应用程序),如果一个独立应用程序缺少提升的权限,则只能显示来自与Silverlight应用程序相同域的内容。但是,您可以使用一个小技巧在没有提升权限的情况下在独立应用程序中显示跨域内容-只需通过NavigateToString传递指向远程内容的IFRAME:

WebBrowserControl.NavigateToString("<iframe src=\"http://www.bing.com\" style=\"width: 100%; height: 100%\"></iframe>");

您也可以使用HtmlBrush来呈现HTML内容。以下XAML片段使用从Bing检索到的内容绘制一个矩形:
<WebBrowser x:Name="WebBrowserControl" Source="http://www.bing.com" />
<Rectangle>
  <Rectangle.Fill>
    <HtmlBrush SourceName="WebBrowserControl" />
  </Rectangle.Fill>
</Rectangle>

WebBrowser和HtmlBrush之间的一个区别在于前者显示“实时”内容,而后者不会。另一个区别是HtmlBrush可以应用变换,而WebBrowser不能。对于涉及HTML内容的花哨视觉效果,比如PDC上展示的HTML拼图演示,您可能会发现自己使用HtmlBrush。要显示实时的交互式内容,您将发现WebBrowser更有用。
WebBrowser控件中真正酷的事情之一是,您可以使用其InvokeScript方法调用由控件托管的内容中的JavaScript函数。反过来,托管在WebBrowser控件内部的JavaScript可以使用window.external.Notify来引发ScriptNotify事件,这些事件可以在C#中处理。

2
您可以使用HtmlBrush或WebBrowser控件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接