如何创建使用可重载插件的 WPF 应用程序?
Posted
技术标签:
【中文标题】如何创建使用可重载插件的 WPF 应用程序?【英文标题】:How to create WPF Application that uses Reloadable Plugins? 【发布时间】:2011-03-13 15:57:47 【问题描述】:我手头有一个有趣的问题。
我需要创建一个 WPF 应用程序来承载多个用户控件。 (该应用程序就是这样做的 - 用作具有 UserControls 对接能力的容器)
应用程序还将作为另一个热交换组件托管 UserControls 的数据模型。 (我计划为每个组件使用内部队列,以便可以交换组件。)
这些用户控件必须是可插入的(这很容易),并且在运行时可重新加载(这似乎很难/不可能)。(AppDomains 似乎是这里的答案,但我不知道其他限制比 AppDomain 对 MarshalByValue 和 marshalByRefObject 的限制有任何 GUI 限制吗?)在运行时“可重新加载”,如在应用程序启动时热交换 UI 组件。
我还希望 UserControl 上的上下文菜单有一些来自 Host 的项目和一些来自 UserControl 本身的项目。
我也有逻辑来控制主机和用户控件之间的焦点(更改焦点事件的边框颜色等)无缝(跨主机和用户控件的选项卡)。
顺便说一句,我还希望 UserControl 支持 ActiveX,以便与 Excel 等 ActiveX 容器集成。
这将使我在单独运行 UserControl(单元测试)、在容器中(无缝导航以及与容器和其他相关 UserControl 集成)以及作为 ActiveX 控件与 ActiveX 容器集成方面具有灵活性。
我想知道这是否可能,以及是否有支持这一点的框架(MAF?)。任何指向示例或文档的指针都会有所帮助。
提前谢谢你,
问候, 文。
【问题讨论】:
【参考方案1】:我一直在探索类似的场景。根据您的描述,MAF 似乎是您最好的选择。 The MSDN documentation is here。 This codeplex site 包含 MAF 的工具和示例。希望这会有所帮助。
【讨论】:
以上是关于如何创建使用可重载插件的 WPF 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章