2013/08/30 C# WPF 学习笔记

命令

事件的作用是发布、传播一些消息,消息送达接受者,事件的使命也就完成了,

至于如何响应事件送来的消息事件并不做规定,每个接收者可以使用自己的行为来响应事件。

也就是说,事件不具有约束力。


命令与事件的区别就在与命令是具有约束力的。

实际编程工作中就算只使用事件、不使用命令,程序的逻辑也一样可以被驱动得很好,

但我们不能阻止程序员按自己的习惯去编写代码。

(

比如保存事件的处理器,程序员们可以写Save()、SaveHandler()、SaveDocument()......这些都符合代码规范,

但迟早有一天整个项目会变得无法被读懂,新来的程序员或修改bug的程序员会很抓狂。

如果使用命令,情况会好很多——当Save命令到达某个组件式,命令会主动去调用组件的Save()方法,而这个

方法可能被定义在基类或者接口里(即保证了这个方法一定是存在的),这就在代码结构和命名上做了约束。

不但如此,命令还可控制接受者“先做校验、再保存、然后关闭”,也就是说,命令除了可以约束代码,还可以约束

步骤逻辑,这让新来的程序员想犯错都难,也让修改bug的程序员很快能找到规律、容易上手。

)


WPF的命令系统由几个基本要素构成:

■命令(Command):WPF的命令实际上就是实现了ICommand接口的类,平时使用最多的是RoutedCommand类。

■命令源(Command Source):基命令的发送者,是实现了ICommandSource接口的类。很多界面元素都实现了这个

接口,其中包括Button、MenuItem、ListBoxItem等。

■命令目标(Command Target):即命令将发送给谁,或者说命令将作用在谁身上。命令目标必须是实现了IInputElement接口的类。

■命令关联(Command Binding):负责把一些外围逻辑与命令关联起来,比如执行之前对命令是否可以执行进行判断、

命令执行之后还有那些后续工作等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值