命令模型的主要元素: 1、命令 2、命令綁定:命令連接到相關的應用程式邏輯 3、命令源:命令源觸發命令, 4、命令目標:應用程式邏輯。 ICommand介面 命令模型的核心是System.Windows.Input.ICommand介面。 該介面包含兩個方法和一個事件: void Execute(o ...
命令模型的主要元素:
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:該類提供了一組用於處理多媒體的命令。