虽然MAF实现了插件式开发,动态热插拨,AppDomain隔离等诸多优点,但是正因为它复杂的功能机制也带来了很多其它方面的使用限制,下面列出官方给出的MAF框架的使用限制。

1) 在应用主程序显示的插件UI不遵循主程序的剪切行为。

2) 在可交互场景空间的概念同样也适用于插件。

3) 一些应用主程序的的服务,比如资源继承,数据绑定,命令等对插件UI来说不是自动实现的,如果要使用这些服务需要更新这个pipeline。

4) 一个插件UI不能被旋转,伸缩,倾斜,否则会被一个变形动作影响。

5) 应用主程序里面的插件不透明度只能设置为100%。

6) 当应用主程序窗体的“AllowsTransparency”设置为true,窗体里面的插件将不会显示。

7) 在一个窗体中,插件的UI永远在保持在其它WPF元素的最顶层。

8) 插件的UI不能被VisualBrush渲染。

9) 媒体文件不能被插件UI中的MediaElement播放。

10) 应用主程序既不会接收也不会触发插件UI生成的鼠标事件,主应用程序UI的“IsMouseOver ”属性值总是为false。

11) 当焦点转移到插件UI的控件中时,主应用程序的GotFocus和LostFocus的事件既不能接收也不能触发。

12) 当打印的时候主应用程序含有插件的部分显示白色。

13) 当主程序继续运行,插件要被卸载之前必须先手动关闭插件的调试程序。

14) 当插件UI为InkCanvas或包含一个InkCanvas时,不能卸载该插件。

15) 当创建多个应用程序域时,创建和启动的时间可能会影响程序的性能。

英文水平有限,如不太明白的可以直接查看官网描述:https://msdn.microsoft.com/en-us/library/bb909794.aspx

MAF框架的使用限制的更多相关文章

  1. 【MAF】MAF插件框架简介

    引言    Managed Add-In Framework是一个插件式框架.它有两大作用,一个是解耦,插件和宿主由7个管道组成,两边都有适配器Adapter管道,能最大程度地降低插件和宿主的耦合度: ...

  2. WPF 跨应用程序域的 UI(Cross AppDomain UI)

    为自己写的程序添加插件真的是一个相当常见的功能,然而如果只是简单加载程序集然后去执行程序集中的代码,会让宿主应用程序暴露在非常危险的境地!因为只要插件能够运行任何一行代码,就能将宿主应用程序修改得天翻 ...

  3. MAF+WPF实现插件式应用程序框架

    关于maf和wpf大家感兴趣的话可以去百度学习一下,下面展示一下成果: 登录界面 主界面:默认的是我的应用,表示已经下载到本地的应用. 辅助应用类似appstore功能,指示未下载或者需要升级的程序列 ...

  4. 重构笔记---MEF框架(上)

    概述 这篇文章的目的是简要分析对比MAF和MEF,并详细举出MEF设计中的细节和扩展上的细节,达到让读者能实际操作的目的.其中,MAF的设计会附上我的代码,其实就是官方的代码我自己手动联系了一遍,但还 ...

  5. 【转】 MEF 和 MAF

    今天在MSDN上看了一下微软这俩个可扩展框架,微软技术高手真很有才! MEF 和 MAF区别: 早期的 .NET Framework 版本引入了 Managed Add-in Framework (M ...

  6. .Net插件编程模型:MEF和MAF[转载]

    .Net插件编程模型:MEF和MAF MEF和MAF都是C#下的插件编程框架,我们通过它们只需简单的配置下源代码就能轻松的实现插件编程概念,设计出可扩展的程序.这真是件美妙的事情! 今天抽了一点时间, ...

  7. 【.Net平台下插件开发】-MEF与MAF初步调研

    背景   Team希望开发一个插件的平台去让某搜索引擎变得更好.主要用于采集一些不满意信息(DSAT)给Dev.这些信息会由不同的team提供不同的 tool分析.有的提供仅仅是一个website,有 ...

  8. Java三方---->excel框架之POI的使用一

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.pdf框架之IText的使用,参见我的博客:Java ...

  9. MEF、MAF和Unity的区别

    在刚学习MEF时,经常会问一个问题,那就是MEF和MAF这样的插件框架.和Unity这样的IoC框架到底有什么区别.MEF与MAF(Managed Addin Framework)最大不同在于:前者关 ...

随机推荐

  1. linux jdk 安装另一种方法

    linux 7.2 安装 jdk方法: (1). 以root用户登录linux系统, 应用Xmanager把文件拷贝到linux 系统的根目录. (2). 进入opt/software建立jvm文件夹 ...

  2. 10个迷惑新手的Cocoa&Objective-c开发问题

    本文转载至  http://blog.csdn.net/lvxiangan/article/details/27964733     language background run­time thre ...

  3. Grunt 学习笔记【1】----基础知识

    题记:虽然现在大家都在推Webpack,无奈业务需要,因此研究下Grunt. 说明:本文是基于Grunt 0.4.5版本. 一 说明 为何要用构建工具? 一句话:自动化.对于需要反复重复的任务,例如压 ...

  4. php标准库DirectoryIterator类的操作说明

    <?php $dir = new DirectoryIterator(dirname(__FILE__)); foreach ($dir as $fileInfo) { if ($fileInf ...

  5. (转)javascript中call()、apply()、bind()的用法

    其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge;  //17 obj.myFun()  //小张年龄undefined 例2 shows( ...

  6. JavaScript及jQuery学习小结

    最近几天学习了很多关于JavaScript和jQuery的文章,稍作梳理后,总结如下. 1.jQuery入门系列 环境搭建 只需引用一个jQuery库文件,即可完成jQuery的环境搭建. 选择器 j ...

  7. iOS define 宏定义 和 const定义常量区别

    const   const 是c++中的修饰符.  c++中常用来定义常量,修饰左值. #define 宏定义语句, 在预处理阶段直接做文本替换,不做类型检查. 它们之间的最大区别: 1.  对于co ...

  8. Cortex-M3 Bit-Banding

    Cortex-M3 Bit-Banding 1. 概述 CM3的存储器系统支持所谓的"位带"(bit-band)操作. 通过它,实现了对单一bit的原子操作.位带操作仅适用于一些特 ...

  9. android 电池(一):锂电池基本原理篇【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/8497830 关键词:Android  电池关机充电 androidboot.mode ...

  10. 游戏引擎基于Handle的资源管理

    基于Handle的资源管理方案,第一时间想到的应该是Windows了,但是真正想让我实施这个方案的,是<游戏编程精粹1>里面的游戏资源管理篇章的给出的方案.在<游戏编程精粹1> ...