Web 浏览器中的 WPF 应用程序的托管由从 WPF 主机注册的活动文档服务器(也称为 DocObject)促进。 Internet Explorer 可以直接激活并与活动文档集成。 为了在 Mozilla 浏览器中托管 XBAP 和松散的 XAML 文档,WPF 提供了 NPAPI 插件,它提供与 WPF Active Document 服务器类似的托管环境,就像 Internet Explorer 一样。 但是,在其他浏览器和独立应用程序中托管 XBAP 和 XAML 文档的最简单实用方法是通过 Internet Explorer Web 浏览器控件。 Web 浏览器控件提供了复杂的 Active Document 服务器托管环境,但它使其自身的主机能够自定义和扩展该环境,并直接与当前 Active Document 对象通信。
警告
XBAP 要求旧版浏览器运行,例如 Internet Explorer 和旧版 Firefox。 这些较旧的浏览器通常在 Windows 10 和 Windows 11 上不受支持。 由于安全风险,新式浏览器不再支持 XBAP 应用所需的技术。 不再支持启用 XBAP 的插件。 有关详细信息,请参阅 有关 WPF 浏览器托管应用程序(XBAP)的常见问题解答。
WPF Active Document 服务器实现多个常见的托管接口,包括 IOleObject、 IOleDocument、 IOleInPlaceActiveObject、 IPersistMoniker、 IOleCommandTarget。 在 Web 浏览器控件中托管时,可以从 IWebBrowser2::Document 属性返回的对象中查询这些接口。
IOleCommandTarget
WPF Active Document 服务器在其 IOleCommandTarget 的实现中支持标准 OLE 命令组(命令组 GUID 为 null)的众多与导航相关以及特定于浏览器的命令。 此外,它还识别名为CGID_PresentationHost的自定义命令组。 目前,此组中只定义了一个命令。
DEFINE_GUID(CGID_PresentationHost, 0xd0288c55, 0xd6, 0x4f5e, 0xa8, 0x51, 0x79, 0xde, 0xc5, 0x1b, 0x10, 0xec);
enum PresentationHostCommands {
PHCMDID_TABINTO = 1
};
PHCMDID_TABINTO指示 PresentationHost 根据其内容中的第一个或最后一个可聚焦元素切换焦点,具体取决于 Shift 键的状态。