【发布时间】:2010-10-03 09:31:21
【问题描述】:
我需要在我的 Silverlight 应用程序中显示一些基本的 HTML(只是一些段落、无序列表和超链接)。我该怎么办?
使用哪个控件?
【问题讨论】:
标签: silverlight silverlight-4.0
我需要在我的 Silverlight 应用程序中显示一些基本的 HTML(只是一些段落、无序列表和超链接)。我该怎么办?
使用哪个控件?
【问题讨论】:
标签: silverlight silverlight-4.0
初学者可以试试这个链接: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 托管不适用于浏览器内的应用程序(它适用于 仅限浏览器外的应用程序),并且如果 OOB 缺少提升的 权限,它只能显示来自相同的内容 域作为 Silverlight 应用程序。但是,您可以使用一点 在没有运行的 OOB 中显示跨域内容的技巧 提升的权限——只需传递一个针对远程的 IFRAME 内容到 NavigateToString:
WebBrowserControl.NavigateToString("<iframe src=\"http://www.bing.com\" style=\"width: 100%; height: 100%\"></iframe>");
您也可以使用 HtmlBrush 呈现 HTML 内容。以下 XAML sn-p 使用从 Bing 检索到的内容绘制一个 Rectangle:
<WebBrowser x:Name="WebBrowserControl" Source="http://www.bing.com" />
<Rectangle>
<Rectangle.Fill>
<HtmlBrush SourceName="WebBrowserControl" />
</Rectangle.Fill>
</Rectangle>
WebBrowser 和 HtmlBrush 之间的一个区别是前者 显示“实时”内容,而后者不显示。另一个区别 是 HtmlBrush 可以对其应用变换,而 WebBrowser 不能。用于涉及 HTML 内容的时髦视觉效果,如 HTML 在 PDC 上演示的谜题,您可能会发现自己正在使用 Html画笔。要显示实时的交互式内容,您会发现 WebBrowser 反而更有用。
关于 WebBrowser 控件的一个非常酷的事情是,您 可以使用它的 InvokeScript 方法来调用 JavaScript 函数 由控件托管的内容。相反,JavaScript 托管在一个 WebBrowser 控件可以使用 window.external.Notify 来引发 可以在 C# 中处理的 ScriptNotify 事件。
【讨论】:
您可以使用 HtmlBrush 或 webbrowser 控件。
【讨论】: