WPF-命令-基础知识
命令模型的主要元素:
1、命令
2、命令绑定:命令连接到相关的应用程序逻辑
3、命令源:命令源触发命令,
4、命令目标:应用程序逻辑。
----------------------------------------------------------------
icommand接口
命令模型的核心是system.windows.input.icommand接口。
public interface icommand { event eventhandler canexecutechanged; //当命令状态改变时,引发该事件。 bool canexecute(object parameter); //此方法返回命令状态,如果命令可用则返回true,不可用则返回false。 void execute(object parameter); //定义在调用此命令时要调用的方法。 }
该接口包含两个方法和一个事件:
void execute(object parameter);
bool canexecute(object parameter);
event eventhandler canexecutechanged;
execute()方法包含应用程序任务逻辑。
canexecute()方法返回命令的状态;如果命令可用,返回true;如果不可用,返回false。
命令状态改变时,引发canexecutechanged事件。对于使用命令的任何控件,这是指示信号,表示它们应当调用canexecute()方法检查命令的状态。
--------------------------------------------------------------------------------------------------------
routedcommand类
创建自己的命令时,不会直接实现icommand接口;而是使用system.windows.input.routedcommand类,该类自动实现了icommand接口。routedcommand类是wpf中唯一实现了icommand接口的类。所有wpf命令都是routedcommand类及其派生类的实例。
routecommand类不包含任何应用程序逻辑,只代表命令,只含有命令本身的功能,所有routedcommand对象的功能相同。
routecommand类为事件冒泡和隧道添加了一些额外的基础结构。
routecommand类私有地实现了icommand接口,并添加了icommand接口方法的不同版本。
public void execute(object parameter, iinputelement target){}
public bool canexecute(object parameter, iinputelement target){}
routedcommand类还引入三个属性:命令名称(name属性)、包含命令的类(ownertype)以及触发命令的按键或鼠标操作。
--------------------------------------------------------------------------------------------------------------------------
routeduicommand类
routeduicommand类继承自routedcommand类(实际上wpf的所有预先构建的命令都是routeduicommand对象)。
routeduicommand类只增加了text属性,该属性是为了显示命令的文本。按钮的文本可以使用命令的text属性,相同命令显示相同的文本。
------------------------------------------------------------------------------------------------------------------
命令库
wpf通过5个静态类的静态属性提供:
1、applicationcommand:通用命令,剪切板命令(copy、cut、paste),文档命令(new、open、save、save as、print)等。
2、navigationcommand:导航命令,基于页面的应用程序设计的一些命令(browseback、browseforward和nextpage)等。
3、editingcommand:文档编辑命令,
4、componentcommands:该类提供了由用户界面组建使用的命令。
5、mediacommands:该类提供了一组用于处理多媒体的命令。