命令模式 Command

MVVM模式旨在降低Xaml与CS文件的耦合,通过Command实现视图与业务逻辑的分离。WPF的Command包括预定义命令和自定义命令,允许设置命令的可用性,并通过ICommand接口进行操作。RoutedCommand和RoutedUICommand用于元素树内的路由。创建命令涉及资源定义、事件处理函数、命令绑定和引用。虽然直接在XAML中绑定命令不太常见,但这种方式能更好地管理代码。
摘要由CSDN通过智能技术生成

MVVM的目的是为了最大限度地降低了Xaml文件和CS文件的耦合度,分离界面和业务逻辑,所以我们要尽可能的在View后台不写代码。但是这个例子中,我们将更新ViewModel的代码写在了View里。我们能否把按钮的响应处理代码也不写在后台代码里呢?

WPF引入Command(命令),通过为Button设置Command来做响应。

命令:Command是一种不同于输入设备的语义级别上的输入处理机制。 Command的目的:

1)降低代码耦合度,将Command的逻辑和调用对象进行分离;

2)可以指定对象是否可用;

Command允许多个不同的对象可以调用同一个命令,也可以为不同的对象定义特殊的逻辑;

命令分类:

1.预定义的命令(predefined command)

1)ApplicationCommands 提供一组与应用程序相关的标准命令(可以直接使用)

2)ComponentCommands 提供一组标准的与组件相关的命令

3)NavigationCommands 提供一组标准的与导航相关的命令。

还有很多诸如:MediaCommands,EditiingCommands

2.自定义Command

(1)Command:要执行的操作。

所有的命令需要继承自接口ICommand

Execute:执行与命令关联的操作。

CanExecute:决定对于当前目标command能否被执行。

CanExecuteChanged(事件): 当出现影响是否应执行该命令的更改时发生。

(2)CommandSource:表示调用命令的对象.

所有command source需要继承ICommandSource

ICommandSource:定义一个知道如何调用命令的对象。

Command:执行的命令

CommandParameter: 命令特定数据(传递给该命令的用户定义的数据值)

CommandTarget:在其上执行该命令的对象(目标对象)

(3) command target:表示执行命令的对象

(4) command binding:建立源和目标的关系,映射命令和命令逻辑,

有时候CommandBinding由控件提供,但command binding并不总是依赖于控件,也可以是自定义的。

RoutedCommand:

在WPF中使用命令的步骤:

1.创建命令 2.绑定命令 3.设置命令源 4.设置命令目标

WPF中命令的核心是System.Windows.Input.ICommand接口,所有命令对象都实现了此接口。当创建自己的命令时,不能直接实现ICommand接口,而是要使用System.Windows.Input.RouteCommand类,该类已经实现了ICommand接口,所有WPF命令都是RouteCommand类的实例。在程序中处理的大部分命令不是RoutedCommand对象,而是RoutedUICommand类的实例,它继承自RouteCommand类。

RoutedCommand: 实现ICommand并在元素树之内进行路由的命令

RoutedUICommand: 定义一个在元素树中路由并包含一个文本属性的ICommand

RoutedUICommand--->RouteCommand-->ICommand

  1. 定义命令:<window.Resources>

  1. 建立事件处理函数:后台逻辑

  1. 绑定:<window.CommandBindings>

  1. 引用:(XMAL) Command="{staticResources .....}"

但还是不常用,麻烦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值