WPF-命令-基础知识
2021-01-21 17:13
标签:pre 逻辑 绑定 改变 状态 不同 不包含 应用 ast 命令模型的主要元素: 1、命令 2、命令绑定:命令连接到相关的应用程序逻辑 3、命令源:命令源触发命令, 4、命令目标:应用程序逻辑。 ---------------------------------------------------------------- ICommand接口 命令模型的核心是System.Windows.Input.ICommand接口。 该接口包含两个方法和一个事件: 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:该类提供了一组用于处理多媒体的命令。 WPF-命令-基础知识 标签:pre 逻辑 绑定 改变 状态 不同 不包含 应用 ast 原文地址:https://www.cnblogs.com/snake1118/p/12107234.htmlpublic interface ICommand
{
event EventHandler CanExecuteChanged; //当命令状态改变时,引发该事件。
bool CanExecute(object parameter); //此方法返回命令状态,如果命令可用则返回true,不可用则返回false。
void Execute(object parameter); //定义在调用此命令时要调用的方法。
}