书名:WPF专业编程指南
作者:李应保
出版社:电子工业出版社
出版时间:2010-01
ISBN:9787121100116
一、传递命令
- 在大型软件工程中,一个软件往往由多个模块组成,通常希望模块和模块之间的相关性越少越好,用专门的术语叫decouple,从而把对一个模块的修改对其他模块的影响降到最低。
使用命令这种设计范例就可以达到目的:发布命令的模块对于命令如何执行一无所知,接收命令的模块对命令加以解释并具体执行。
二、命令范例的实现方式
-
如图7-9所示。
图7-9 命令范例的UML图示 在图7-9中Invoker类是命令的发出者,Command通常是抽象类(Absctract class in C++/C#)或Interface(C#或Java),ConcreteCommand实现到具体对象上的操作(Receiver类),它应知道要调用目标类上的方法。
三、作用机制
-
WPF中不仅支持命令范例,而且实现了命令和传递事件一样在元素树上的传递,WPF更进一步开发了常用命令的功能。
WPF传递命令的作用机制如图7-10所示。
图7-10 WPF中的传递命令 通常菜单条目或按钮发出相关命令,WPF的命令仓库中(Command Repository)支持一系列命令,然后把命令绑定到用户界面上的UI元素上。
例如,在菜单条目里使用命令:
<StackPanel>
<Menu>
<MenuItem Command="ApplicationCommands.Paste" />
</Menu>
<TextBox />
</StackPanel>
其中ApplicationCommands.Paste就是命令仓库中的粘贴命令。

