命令模型的主要元素:spa
一、命令設計
二、命令綁定:命令鏈接到相關的應用程序邏輯code
三、命令源:命令源觸發命令,對象
四、命令目標:應用程序邏輯。blog
----------------------------------------------------------------繼承
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);get
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個靜態類的靜態屬性提供:
一、ApplicationCommand:通用命令,剪切板命令(Copy、Cut、Paste),文檔命令(New、Open、Save、Save As、Print)等。
二、NavigationCommand:導航命令,基於頁面的應用程序設計的一些命令(BrowseBack、BrowseForward和NextPage)等。
三、EditingCommand:文檔編輯命令,
四、ComponentCommands:該類提供了由用戶界面組建使用的命令。
五、MediaCommands:該類提供了一組用於處理多媒體的命令。