XBAP 承载 Silverlight 的示例

Microsoft MSDN:

http://msdn.microsoft.com/zh-cn/library/cc656722(v=vs.90).aspx

 

本示例演示以下内容:

  • 如何在 XAML 浏览器应用程序 (XBAP) 中承载基于 Silverlight 的应用程序。

  • 如何在宿主 XBAP 和基于 Silverlight 的寄宿应用程序之间通信。

Download sample

通过使用 WebBrowser 控件,可以在 XBAP 中承载基于 Silverlight 的应用程序。XBAP Page 的内容包含 WebBrowser 控件,该控件的源 URI 可以标识承载着基于 Silverlight 的应用程序的 HTML 页。HTML 页使用 Silverlight 插件控件承载基于 Silverlight 的应用程序。

下图阐释了在 XBAP 中承载基于 Silverlight 的应用程序的高级别体系结构。

承载 Silverlight 应用程序的 WPF 应用程序

宿主 XBAP 可以借助脚本方法与基于 Silverlight 的寄宿应用程序进行通信,这里的脚本方法由承载基于 Silverlight 的应用程序的 HTML 页实现。XBAP 使用 InvokeScript 方法调用脚本方法。脚本方法随后调用由可编写脚本的对象实现的方法,该对象通过基于 Silverlight 的应用程序公开,其脚本调用可通过 Silverlight 插件控件的 Content 属性实现。

下图说明了在 XBAP 中承载基于 Silverlight 的应用程序的高级别体系结构,以及从宿主 XBAP 向基于 Silverlight 的寄宿应用程序传播方法调用时所用的关键技术。

WPF 与 Silverlight 交互操作

若要使用 WebBrowser 控件调用脚本方法,请参见 WebBrowser 控件示例。有关实现基于 Silverlight 的应用程序(用于公开可编写脚本的对象)的更多信息,请参见 Walkthrough: Calling Managed Code from JavaScript(演练:从 JavaScript 调用托管代码)。有关如何开发基于 Silverlight 的应用程序的介绍,请参见 Getting Started with Silverlight(Silverlight 入门)。

基于 Silverlight 的寄宿应用程序可以借助脚本方法与宿主 XBAP 进行通信,这里的脚本方法由承载基于 Silverlight 的应用程序的 HTML 页实现。基于 Silverlight 的应用程序使用HtmlWindow 类(来自 System.Windows.Browser 命名空间)的 Invoke 方法调用脚本方法。基于 Silverlight 的应用程序从 HtmlPage 类(同样位于 System.Windows.Browser命名空间)的 Window 属性获取对窗口(由 HtmlWindow 类表示)的引用。脚本方法随后调用由可编写脚本的对象实现的方法,该对象通过 ObjectForScripting 属性从 XBAP 公开,其脚本调用可通过 window 对象(由宿主浏览器公开)的 external 属性实现。

下图说明了在 XBAP 中承载基于 Silverlight 的应用程序的高级别体系结构,以及从基于 Silverlight 的寄宿应用程序向宿主 XBAP 传播方法调用时所用的关键技术。

Silverlight 与 WPF 交互操作

若要从基于 Silverlight 的应用程序调用脚本方法,请参见 Walkthrough: Calling JavaScript from Managed Code(演练:从托管代码调用 JavaScript)。有关从 XBAP 公开可编写脚本的对象的更多信息,请参见 WebBrowser 控件示例和 ObjectForScripting

本示例由一个解决方案 (XBAPHostingSilverlightSample) 和两个项目组成:

  1. XBAP 项目 (WPFBrowserApplication),用于承载基于 Silverlight 的应用程序。

  2. 基于 Silverlight 的应用程序项目 (SilverlightApplication)。

SilverlightApplication 在 WPFBrowserApplication 之后生成,它包括一个生成后步骤,会将生成的基于 Silverlight 的应用程序 silverlightspplication.xap 复制到 WPFBrowserApplication 项目输出文件夹:\bin\debug。

必须使用以下步骤对示例进行配置,使其从 localhost 上指向 WPFBrowserApplication 项目输出文件夹 (\bin\debug) 的虚拟目录运行:

  1. “开始”|“管理工具”中选择“Internet 信息服务(IIS)管理器”

  2. 选择“网站”|“默认网站”。

  3. 右击“默认网站”并选择“添加虚拟目录”,然后

    1. “别名”设置为“WPFBrowserApplication”。

    2. “物理路径”设置为 WPFBrowserApplication 项目输出文件夹。

  4. “确定”以创建虚拟目录。

若要运行示例,请导航到以下 URL:

http://localhost/WPFBrowserApplication/WPFBrowserApplication.xbap

此示例演示 Windows Presentation Foundation 的特定功能,因此未遵循应用程序开发的最佳做法。有关 Windows Presentation Foundation (WPF) 和 Microsoft .NET Framework 应用程序开发的最佳做法的全面介绍,请相应地参考以下主题:

辅助功能 - 辅助功能最佳方案

本地化 - WPF 全球化和本地化概述

性能 - 优化 WPF 应用程序性能

安全 - Windows Presentation Foundation 安全性

  • 安装 Windows 软件开发工具包 (SDK) 并打开其生成环境命令窗口。在“开始”菜单上,指向“所有程序”、“Microsoft Windows SDK”,然后单击“CMD Shell”。

  • 将示例(通常位于软件开发工具包 (SDK) 文档中)下载到您的硬盘。

  • 若要从生成环境命令窗口生成示例,请转到示例的源目录。在命令提示符处,键入 MSBUILD。

  • 若要在 Microsoft Visual Studio 中生成示例,请加载示例解决方案或项目文件,然后按 Ctrl+Shift+B。

  • 若要从生成环境命令窗口运行已编译的示例,请执行示例源代码文件夹下包含的 Bin\Debug 或 Bin\Release 文件夹中的 .exe 文件。

  • 若要在 Visual Studio 中调试运行已编译的示例,请按 F5。

你可能感兴趣的:(silverlight)