Composite UI Application Block 之自定义CommandAdapter

 

1.1. Commands

1.1.1.    类关系图

26 主要类关系图

说明:

1.         Command定义了一个命令,如“FileExit”,它跟一系列的CommandAdapter相关,好比一个命令可以从多个地方下发(菜单或工具栏等等)。

2.         Command持有一个ICommandAdapterMapService接口,也正是这个接口,通过void Register(Type invokerType, Type adapterType)完成了后期的扩展,比如添加自定义的CommandAdapter

3.         在各个CommandAdapter中触发的事件最终都是调用Command中的事件处理程序,这样的设计很显然是为了保持命令的一致性,如果菜单和工具栏上同样的命令,操作却不一样,那就神奇了J,请看Command中的代码:

            public virtual void AddCommandAdapter(CommandAdapter adapter)

           {

                 adapter.ExecuteCommand += this.OnExecuteAction;

                 adapter.BindCommand(this);

                 adapters.Add(adapter);

           }

1.1.2.    接口定义

27 ICommandAdapterMapService

其中CommandAdapterMapServiceCAB提供的默认实现。

1.1.3.    接口协作

28接口协作

说明:

1.         Register时,是根据具体类型添加相应的CommandAdapter,比如

29 注册自定义的CommandAdapter

因此在调用AddInvoker时传入ClickableTreeNode类型实例时,将会调用到TVClickableNodeCommandAdapter进行事件的注册。

WindowsFormsApplication基础类中默认提供了两种Adapter

private void RegisterCommandAdapters()

           {

                 ICommandAdapterMapService mapService = RootWorkItem.Services.Get<ICommandAdapterMapService>();

                 mapService.Register(typeof(ToolStripItem), typeof(ToolStripItemCommandAdapter));

                 mapService.Register(typeof(Control), typeof(ControlCommandAdapter));

           }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值