共用方式為


工具架構

更新:2007 年 11 月

使用者會以各種不同的方式與設計工具上的內容互動。例如,使用者可能會以點選、拖曳、拖曳加輔助按鍵、鍵盤或功能表等互動方式,與設計介面互動。為了延伸性,設計工具必須提供處理上述所有使用者互動類型的基礎。Windows Presentation Foundation (WPF) Designer for Visual Studio 即提供了彈性但結構化的輸入系統,具備延伸性與一致性。工具架構的使用者模型包含命令、工作和工具。

命令

「命令」是代表某種行為的唯一識別項。例如,[剪下] 命令就是識別剪下文字或物件再將它加入到 [剪貼簿] 的程序。雖然會實作命令的程式碼可能會視應用程式而有所不同,甚至在應用程式內就不同,但命令本身仍維持不變。所有命令都會實作 ICommand 介面。

如果要使命令能夠運作,除了命令本身之外,另外還需要兩個項目。首先,命令需要某種可以觸發命令的使用者輸入 (稱為動作)。例如,CTRL+X 按鍵組合或從功能表選取命令,可以視為是觸發命令的動作。其次,命令需要某種程式碼實作,這種程式碼實作會在叫用命令時執行。

WPF 提供內建 ICommand 介面實作,稱為 RoutedCommand,它會將使用者輸入的相關資訊傳遞到指定的命令處理常式。WPF 設計工具則提供另一種名稱為 ToolCommand 的命令類型,它會擴充設計工具狀態的相關資訊量,而這些資訊會傳遞到命令處理常式的 EventArgs 類型。

工作

Task 是一種物件,代表可能會在設計工具中執行的實際工作。例如,在設計工具上拖曳項目這項工作可能會以 Task 物件表示。Task 包含三個集合:

  1. 輸入繫結集合,輸入繫結會描述工作所處理的使用者輸入類型。例如,表示按鍵組合或滑鼠動作的繫結。

  2. 命令繫結集合,命令繫結會提供標準 WPF 路由命令的實作。

  3. 工具命令繫結集合,工具命令繫結會提供 WPF 設計工具工具命令的實作。

例如,上述表示在設計工具上拖曳項目的 Task 物件,可能就包含表示滑鼠下移、滑鼠移動及和滑鼠上移的命令。Task 物件也可能包含會將輸入動作與各個命令繫結起來的輸入繫結。

工具

Tool 是一種類別,用來處理使用者輸入。所有使用者輸入都會以一個或多個輸入事件進入設計工具,其中帶有資料,表示使用的輸入動作以及與設計工具狀態相關的其他資訊。輸入事件會傳遞至目前使用中的 Tool 物件,此物件會將輸入資料轉換為輸入繫結。如果找到指定之輸入動作的繫結,就會執行繫結內的命令。

Tool 物件用來表示設計工具的全域模式。例如,如果使用者在設計介面上選取元件,就會啟用該模式,因為目前工具所提供的工作會提供輸入繫結和命令的集合,而這個集合會將特定輸入動作與啟用這些工作的特定命令繫結起來。如果使用者是建立新的控制項,那麼使用中的工具就會不同,而且會提供不同的一組繫結,這些繫結可以讓使用者使用相同的動作,但會將這些動作繫結至不同的命令。

請參閱

概念

使用者輸入和展示架構

WPF 設計工具擴充性架構

參考

Tool

Task

ToolCommand

ICommand