共用方式為


使用者輸入和展示架構

更新:2007 年 11 月

建置設計工具時,有幾個關於使用者輸入的課題必須解決。例如,項目焦點的控制、傳送滑鼠和鍵盤的輸入、加入裝飾項,以及叫用命令,都必須有個通用的集中式機制處理使用者輸入。在 Windows Presentation Foundation (WPF) Designer for Visual Studio 中,DesignerView 類別提供所有這些課題的管理,並且是展示主要設計介面的類別。

Adorner

裝飾項是只會出現在 [設計] 檢視中的視覺項目,用於協助設計程序。例如,在選取控制項時出現在控制項周圍的調整大小控點,即是一個裝飾項的例子。DesignerView 類別包含的 Adorners 集合中的裝飾項,就可以加入在 [設計] 檢視中並使用。如需裝飾項的詳細資訊,請參閱裝飾項架構

輸入傳送

DesignerView 類別提供標準的集中式方法,用於傳送使用者輸入。輸入程序包含下列通用步驟:

  1. 發生輸入事件。

  2. 執行點擊測試 (Hit Testing)。

  3. 尋找輸入繫結。

  4. 執行命令繫結。

  5. 下列各節會詳細檢查這些步驟。

發生輸入事件

輸入事件發生時,會傳送到負責執行點擊測試的 DesignerView 類別。

執行點擊測試

輸入事件抵達 DesignerView 執行個體時,會執行點擊測試掃描。點擊測試會掃描裝飾項層和物件階層架構中的視覺項目,並傳回下列資訊:

  • 滑鼠停留在什麼裝飾項上。

  • 裝飾項與什麼模型項目關聯。

  • 滑鼠所停留的視覺項目 (如果不是裝飾項)。

  • 與視覺項目關聯的模型項目。

尋找輸入繫結

點擊測試後,DesignerView 會嘗試將輸入事件對應到輸入繫結。用於尋找輸入繫結的演算法會依據設計工具目前的狀態而變動:

  • 如果目前使用中工具有作用中工作,則只會為該工作的輸入繫結搜尋相符的輸入事件繫結。

  • 對於滑鼠輸入,DesignerView 會檢查點擊測試過的裝飾項,尋找具有符合輸入事件的輸入繫結的工作。如果發生捕捉動作,則使用的裝飾項會是在發生捕捉動作時經過點擊測試的裝飾項。如果沒有點擊測試任何裝飾項,DesignerView 會逐一查看使用中工具所包含工作的輸入繫結。

  • 對於鍵盤輸入,DesignerView 會逐一查看使用中工具所包含工作的輸入繫結。在裝飾項上的鍵盤輸入繫結會被忽略。

    注意事項:

    滑鼠輔助按鍵 (Modifier Key) 的輸入不會被忽略。輔助按鍵配合滑鼠輸入會正常運作。

執行命令繫結

一旦取得輸入繫結,就會呼叫繫結命令上的 Execute 方法。然而,命令只是介面,所以 Execute 的行為是由該命令的實作決定。

請參閱

概念

裝飾項架構

參考

DesignerView

Execute

其他資源

了解 WPF 設計工具擴充性