博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

[译]IActivityToolboxService

Posted on 2009-11-21 11:57  生鱼片  阅读(1651)  评论(1编辑  收藏  举报

原文地址:http://blogs.msdn.com/kushals/archive/2009/09/16/iactivitytoolboxservice.aspx

在工作流的创作过程中,客户都希望他们的工具箱是上下文相关的。例如一个特定的活动被添加到工作流中,然后确保需要在工具箱中显示几个其他的活动,或者
活动从工作流中移除时,工具箱也要根据领域的需求做出适当的反应。

当然在重新宿主的工作流设计器中,这些都是很容易做到的,因为你可以控制工具箱控件并且能确保其根据工作流中的模型变化而更改。

然而,在VS中工具箱是一个特定的控件,我们需要借助IActivityToolboxService来完成该目的:

public interface IActivityToolboxService 
    { 
        void AddCategory(string categoryName); 
        void RemoveCategory(string categoryName); 
        void AddItem(string qualifiedTypeName, string categoryName); 
        void RemoveItem(string qualifiedTypeName, string categoryName); 
        IList<string> EnumCategories(); 
        IList<string> EnumItems(string categoryName); 
    }

这个API的自解释是很漂亮的。

我还附有一个最基本的示例,如果特定活动设计器具有OnModelItemChanged事件,当该事件触发时,我们就可以使用IActivityToolboxService来编辑VS中的工具箱项。OnModelItemChanged事件在自定义活动拖放到工作流上时触发。

还请注意,从一个特定的工作流选项卡上的删除项目,起初应当是使用IActivityToolboxService 添加的。 这就意味着,对于Workflow1.xaml你不能删除任何开箱即用的活动。 它的工作的方式是,您首先添加自定义的活动,然后删除它们,具体取决于您目前的上下文所需。