使用者輸入和展示架構
建置設計工具時,有幾個關於使用者輸入的課題必須解決。 例如,項目焦點的控制、傳送滑鼠和鍵盤的輸入、加入裝飾項,以及叫用命令,都必須有個通用的集中式機制處理使用者輸入。 在 WPF Designer for Visual Studio 中,DesignerView 類別提供所有這些課題的管理,並且是展示主要設計介面的類別。
裝飾項
裝飾項是只會出現在 [設計] 檢視中的視覺項目,用於協助設計程序。 例如,在選取控制項時出現在控制項周圍的調整大小控點,即是一個裝飾項的例子。 DesignerView 類別包含的 Adorners 集合中的裝飾項,就可以加入在 [設計] 檢視中並使用。 如需裝飾項的詳細資訊,請參閱裝飾項架構。
輸入傳送
DesignerView 類別提供標準的集中式方法,用於傳送使用者輸入。 輸入程序包含下列通用步驟:
發生輸入事件。
執行點擊測試 (Hit Testing)。
尋找輸入繫結。
執行命令繫結。
下列各節會詳細檢查這些步驟。
發生輸入事件
輸入事件發生時,會傳送到負責執行點擊測試的 DesignerView 類別。
執行點擊測試
輸入事件抵達 DesignerView 執行個體時,會執行點擊測試掃描。 點擊測試會掃描裝飾項層和物件階層架構中的視覺項目,並傳回下列資訊:
滑鼠停留在什麼裝飾項上。
裝飾項與什麼模型項目關聯。
滑鼠所停留的視覺項目 (如果不是裝飾項)。
與視覺項目關聯的模型項目。
尋找輸入繫結
點擊測試後,DesignerView 會嘗試將輸入事件對應到輸入繫結。 用於尋找輸入繫結的演算法會依據設計工具目前的狀態而變動:
如果目前使用中工具有作用中工作,則只會為該工作的輸入繫結搜尋相符的輸入事件繫結。
對於滑鼠輸入,DesignerView 會檢查點擊測試過的裝飾項,尋找具有符合輸入事件的輸入繫結的工作。 如果發生捕捉動作,則使用的裝飾項會是在發生捕捉動作時經過點擊測試的裝飾項。 如果沒有點擊測試任何裝飾項,DesignerView 會逐一查看使用中工具所包含工作的輸入繫結。
對於鍵盤輸入,DesignerView 會逐一查看使用中工具所包含工作的輸入繫結。 在裝飾項上的鍵盤輸入繫結會被忽略。
注意
滑鼠輔助按鍵 (Modifier Key) 的輸入不會被忽略。輔助按鍵配合滑鼠輸入會正常運作。
執行命令繫結
一旦取得輸入繫結,就會呼叫繫結命令上的 Execute 方法。 然而,命令只是介面,所以 Execute 的行為是由該命令的實作決定。