托管位于插件DLL中的WPF页面

时间:2012-01-22 18:37:41

标签: c# wpf plugins dll

我正在设计一个使用DLL插件架构的WPF程序。主机应用程序比内容更“铬”。它负责提供一致的外观和感觉,并提供所有插件通用的一些功能(例如“检查更新”按钮)。

但是,我的计划是第三方开发人员将对插件进行编码。因此,他们需要添加特定于插件的功能。我设计了主机应用程序,以便它分配一个标签页(如果插件请求它,则为两个),并允许插件用自己的按钮,列表框等填充该标签页,然后触发相应的插件中的代码。

有点像MDI,除了按钮将托管在主机应用程序的标签页中,但会触发插件中的事件。

我需要一些帮助来弄清楚如何实现这个设计。作为主持人 - 程序员,我需要做些什么来支持这一点(比如加载插件并填写标签页)?插件开发人员需要做什么

  • 在我的标签页中“嵌入”他们的WPF
  • 抓住其嵌入式控件生成的事件
  • 将其转换为DLL

2 个答案:

答案 0 :(得分:3)

检查WPF Add-Ins架构。这是sample

答案 1 :(得分:2)

实现插件架构所需的大部分样板资料都可以在Managed Extensibility Framework中找到: http://mef.codeplex.com/

对于将在客户端页面中触发事件的主机上的托管按钮,您可以通过执行将客户端页面设置为目标的特定命令来实现此目的。以下是在名为“hostedWpfPageControl”的页面上执行“粘贴”命令的示例:

ApplicationCommands.Paste.Execute(null, this.hostedWpfPageControl);