Sharping's Technique Claver

Just be a low-level developer !

博客园 首页 新随笔 联系 订阅 管理
  12 Posts :: 0 Stories :: 86 Comments :: 0 Trackbacks
      上一篇: 宿主工作流设计器(二)

      接着说我们宿主工作流设计器的话题,本节我们讲讲定制一个工具箱,允许从其中拖放工作流活动到我们的设计器当中,以及上下文菜单的定制。
      记得上一篇我们取得WorkFlowView的代码吗?有这么一段:
IDesignerHost designerHost = designSurface.GetService(typeof(IDesignerHost)) as IDesignerHost;

      我们看看desingerHost,它其实是整个工作流组建中的服务容器,里面承载了各种工作流设计器所需的服务,上一篇说DesignSurface也起到服务容器的作用,确切的说DesignSurface是desingerHost的上级容器,我们如果了解微软的Container/Componenet/Service设计思想就应该知道,下级容器会向上级容器提供服务,而注册点应该是一致的,我们可以看看整个设计器的架构图就清楚了。

      

      我们的工具箱拖放功能其实也是以服务的形式放到desingerHost中,而要使得工作流设计器支持这个功能,必须提供一个实现IToolboxService接口的服务类,然后调用designerHost.AddService方法注册到designerHost中,当然这个类必须以组件(Component)形式存在,以便我们把它作为工具箱放到我们自己的UI中。    
      下面是MSDN文章中一个工作流工具箱的实现:
      
ToolboxService