命令模型的主要元素:
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:該類提供了一組用于處理多媒體的命令,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/16119.html
標籤:WPF
