拖放的UI自動化支援
Microsoft UI 自動化會定義兩種控件模式,以支援拖放案例、拖曳 控件模式,以及 DropTarget 控件模式。 您可以實作可拖曳之專案的拖曳控件模式,以及可接收拖曳元素之專案的DropTarget控制件模式;也就是卸除目標。 這兩種控件模式會公開輔助技術可用來協助輔助功能使用者完成拖放作業的資訊。
拖曳樣式
當您實作可拖曳專案 拖曳 控件模式時,您必須決定是否實作 來源/目標 拖曳樣式,或 僅限來源 拖曳樣式。
來源/目標樣式
在拖放的來源/目標樣式中,拖曳的專案(“source”) 和 drop-target 元素 (“target”) 是相異的,而且每個專案都會引發一組不同的事件。 以下是使用來源/目標樣式的拖曳作業生命週期:
- 當使用者啟動拖曳作業時:
- 來源會引發 DragStart (UIA_Drag_DragStartEventId) 事件。
- 來源會將 IDragProvider::IsGrabbed 屬性設定為 true 。
- 目標會更新其 DropTargetEffect 屬性。
- 目標會引發 DragEnter (UIA_DropTarget_DragEnterEventId) 事件。
- 目標會引發 DragLeave (UIA_DropTarget_DragLeaveEventId) 事件。
- 來源會引發 DragCancel (UIA_Drag_DragCancelEventId) 事件。
- 來源會將 IDragProvider::IsGrabbed 屬性設定為 FALSE。
- 來源會引發 DragComplete (UIA_Drag_DragCompleteEventId) 事件。
- 來源會將 IDragProvider::IsGrabbed 屬性設定為 FALSE。
- 目標會設定 IDropTargetProvider::D ropTargetEffect 屬性,以指出發生的效果。
- 目標會引發Dropd (UIA_DropTarget_DroppedEventId) 事件。
當拖曳作業進入目標區域時:
當拖曳作業離開目標區域時:
當使用者將拖曳的專案放開至非目標時:
當使用者將拖曳的專案放開至目標時:
來源和目標物件的事件密切相關,但不同。 拖曳內容的相關數據來自來源,而有關「可能發生什麼」和「發生什麼事」的數據則來自目標。
當拖曳作業進行中時,拖曳的項目可以在作業完成之前,在目標區域中拖入和移出任何次數。
任何需要更新其 IDropTargetProvider::D ropTargetEffect 屬性的卸除目標,都應該在該屬性上引發其他屬性變更事件。
僅限來源樣式
僅限來源的拖曳樣式可讓提供者避免實作置放目標。 不實作置放目標有助於降低實作成本,但不會為輔助功能用戶端應用程式提供接收卸除之物件的任何資訊。 以下是使用僅限來源樣式之拖曳作業的生命週期:
- 當使用者啟動拖曳作業時:
- 來源會引發 DragStart (UIA_Drag_DragStartEventId) 事件。
- 來源會將 IDragProvider::IsGrabbed 屬性設定為 true 。
- 來源會將 IDragProvider::D ropEffect 屬性設定為適當的值。
- 來源會將 IDragProvider::D ropEffect 屬性設定為適當的值。
- 來源會引發 DragCancel (UIA_Drag_DragCancelEventId) 事件。
- 來源會將 IDragProvider::IsGrabbed 屬性設定為 FALSE。
- 來源會引發 DragComplete (UIA_Drag_DragCompleteEventId) 事件。
- 來源會設定 IDragProvider::D ropEffect 屬性,以指出卸除專案時所發生的效果。
當拖曳作業進入目標區域時:
當拖曳作業離開目標區域時:
當使用者將拖曳的專案放開至非目標時:
當使用者將拖曳的專案放開至目標時:
拖曳多個專案
如果提供者實作拖放作業,讓使用者可以同時拖曳多個物件,提供者會使用上一節中所述的來源/目標或僅限來源樣式,但差異很小。 當用戶開始拖曳作業時,提供者會建立主要來源專案,表示正在拖曳的完整專案集。 主要來源專案代表一組拖曳的項目引發所有事件;專案不會引發自己的任何事件。
- 當使用者啟動拖曳作業時:
- 提供者會建立主要來源專案。
- 主要來源元素會引發 DragStart (UIA_Drag_DragStartEventId) 事件。
- 主要來源元素會將 IDragProvider::IsGrabbed 屬性設定為 TRUE。
- 主要來源元素會更新已擷取專案清單,以包含要拖曳的所有專案,讓 getGrabbedItems方法擷取清單。
在該點上,主要來源元素會執行與上一節所述之來源元素相同的角色。
拖放的用戶端介面
使用者介面自動化用戶端應用程式會使用 IUIAutomationDragPattern 和 IUIAutomationDropTargetPattern 介面,從 UI 元素存取拖放資訊。