如何创建使用Reloadable插件的WPF应用程序?

时间:2011-03-13 15:57:47

标签: wpf activex contextmenu appdomain hotswap

我手头有一个有趣的问题。

我需要创建一个WPF应用程序,它将托管多个UserControl。 (该应用程序就是这样 - 作为具有UserControls对接功能的容器)

应用程序还将托管UserControls的数据模型作为另一个热交换组件。 (我计划为每个组件使用内部队列,以便可以交换组件。)

这些用户控件必须是可插拔的(这很简单),并且可以在运行时重新加载(这似乎很难/不可能)。(AppDomains似乎就是这里的答案,但我不知道其他限制是否存在对MarshalByValue和marshalByRefObject的AppDomain限制是否有任何GUI限制?)“可重新加载”在运行时,如在应用程序启动时热交换UI组件。

我还希望UserControl上的Context菜单包含来自Host的一些项目和来自UserControl本身的一些项目。

我还有逻辑来无缝地控制主机和UserControl之间的焦点(在焦点事件上更改边框颜色等)(跨主机和用户控件的选项卡)。

另外,我还希望UserControl能够启用ActiveX,以便与Excel等ActiveX容器集成。

这将使我在运行UserControl方面具有灵活性(单元测试),在容器中(无缝导航和与容器和其他相关UserControl集成),以及作为ActiveX控件与ActiveX容器集成。

我想知道是否有可能,以及是否有框架(MAF?)支持这一点。任何指向示例或文档的指针都会有所帮助。

提前谢谢你,

此致 法师。

1 个答案:

答案 0 :(得分:0)

我一直在探索类似的情景。根据您的描述,MAF似乎是您最好的选择。 The MSDN documentation is hereThis codeplex site包含MAF的工具和样本。希望这会有所帮助。