首页 / C# / c# – 为WPF应用程序创建附加组件
c# – 为WPF应用程序创建附加组件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 为WPF应用程序创建附加组件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1892字,纯文字阅读大概需要3分钟。
内容图文
![c# – 为WPF应用程序创建附加组件](/upload/InfoBanner/zyjiaocheng/819/2066c9ae4ca54707b26bb74830ae6a87.jpg)
我有一个简单的数据库应用程序,用户可以在其中添加或删除人员.此外,应用程序有一个按钮“向应用程序添加新按钮”.此应用程序使用Prism框架构建.有两个模块:
> RibbonControlModule(包含三个按钮 – 添加人员,删除人员,向应用程序添加新按钮)
> PersonModule(包含添加和删除人员的逻辑)
我的要求是在运行时添加新按钮.
让我们想象一下情况.我住在华盛顿,我很满意这两个按钮(添加人和删除人).但我住在新泽西的朋友鲍勃想要添加新的按钮编辑按钮,而无需重新编译整个应用程序.也就是说,Bob在可以编辑人物的地方编写dll,然后在RibbonControlModule中单击“将新按钮添加到应用程序”.之后,EditPerson按钮出现在RibbonControl中,例如,在ContextMenu中.也许EditPerson dll会是另一个Prism模块,我不知道.
也就是说,我的要求是:
>可插拔控件
>是否可以在不进行补偿的情况下插入控制? (如浏览器中的加载项或扩展(Classic Notes for Opera)(无需重新启动浏览器即可使用加载项))
>其他程序员可以在不使用我的源代码的情况下开发他们的附加组件
>用户插入控件后,应始终将此新控件插入应用程序中.
是否可以使用WPF,MVVM和Prism?我真的很喜欢Prism并且不想否认Prism,但如果“最终证明手段合理”,我想使用其他技术.
如果有可能,那我该怎么办呢?
解决方法:
这就是MEF plugin architecture的设计目标.
简而言之,您创建了一个包含插件接口的SDK,并将其作为独立库提供给客户端.然后,客户端的插件将实现此接口,并使用MEF Export属性将其导出,然后主应用程序将导入该属性.
有点棘手的是数据模板,这通常是MVVM的关键组件.简而言之,您的插件需要将其数据模板放在资源字典中,为该字典提供自己的部分类文件,并使用MEF的[Export]属性将其导出.然后您的主应用程序需要导入这些并将它们添加到全局ResourceDictionary的’MergedDictionaries’数组中.这通常与您在单独的传递中导入的所有视图模型类分开完成.实际效果是,您的插件可以在运行时提供视图和视图模型,以及将两者绑定在一起的数据模板,并且它们都可以像将它们静态编译到原始应用程序中一样工作.这也意味着您可以为客户创建插件API,而不会暴露主应用程序的内部.
这是一个非常复杂的主题,考虑到这个问题的一般性,如果这个问题没有被标记,我会感到惊讶.如果您想了解更多详情,请告知我们,我们可以将其移至讨论页面.
内容总结
以上是互联网集市为您收集整理的c# – 为WPF应用程序创建附加组件全部内容,希望文章能够帮你解决c# – 为WPF应用程序创建附加组件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。