命令使用步骤:
创建命令类。创建一个实现ICommand接口的类,如果命令与具体业务逻辑无关,使用WPF类库中的RoutedCommand类即可。如果想得到与业务逻辑相关的专有命令,则需创建RoutedCommand或ICommand接口的派生类
声明命令实例。使用命令时需要创建命令类的实例。一般情况下,程序中的某种操作只需要一个命令实例与之对应即可,因此,程序中的命令多使用单件模式,以减少代码复杂度。
指定命令的源。同一个命令可以有多个源,一旦命令指派给命令源,那么命令源就会受命令的影响,当命令不能被执行的时候,作为命令源的控件将处于不可用的状态。
指定命令的目标。命令目标不是命令的属性,而是命令源的属性,被指定为命令源的组件,无论是否拥有焦点都会收到命令。如果没有指定目标,wpf默认当前拥有焦点的对象就是命令目标。
设置命令关联。无论命令目标是由程序员指定还是由WPF根据焦点所在判断出来的,一旦某个UI组件被命令源“瞄上”,命令源就会不断向命令目标投石问路,命令目标就会不停地发送可路由的PreviewCanExecute 和CanExecute附加事件,这两个事件会沿着UI元素树向上传递并被命令关联所捕捉,命令关联捕捉到这些事件后就会实时向命令报告是否能够发送。如果命令被发送出来,并到达命令目标,命令目标就会发送PreviewExecuted和Executed两个附加事件,这两个事件会沿着UI元素树传递并被命令关联捕捉,命令关联会完成一些后续的任务。
一、RoutedCommand
前端代码:
<StackPanel Name="clearStackPanel">
<StackPanel Orientation="Horizontal">
<Button Name="clearButton" Content="Send Clear Text Command" Margin="5" />
<Button Name="addButton" Content="Send Add Text Command" Margin="5" />
</StackPanel>
<TextBox x:Name="beCleardeText" Height="80" Margin="5" Text="鸿雁长飞光不度,鱼龙潜跃水成文"/>
</StackPanel>
后端 :
privat