拖曳控件模式
使用 IDragProvider,提供實作 拖曳 控件模式的指導方針和慣例,包括屬性和方法的相關信息。 拖曳 控件模式是用來支援可拖曳的控件,或具有可拖曳專案的控件。
實作指導方針和慣例
實作 拖曳 控件模式時,請使用下列指導方針和慣例:
-
IDragProvider 介面支援兩種不同的拖曳樣式:來源/目標樣式和僅限來源樣式。 您必須選擇最適合拖放案例的樣式:
- 來源/目標樣式: 每個可能的置放目標都會以實作 IDropTargetProvider 介面的專案來表示。 在拖曳作業期間,Microsoft UI 自動化事件源自正在拖曳的專案,以及從置放目標元素。
- 僅限來源的樣式: Drop 目標不是由 UI 自動化元素表示。 在拖曳作業期間,事件只源自正在拖曳的專案。
- IDragProvider 是一個唯讀介面,用於監視拖曳作業。 您無法使用它來控制拖曳作業。 您可以將滑鼠輸入傳送至控件,將拖曳作業自動化。
- 需要 IDragProvider::IsGrabbed 屬性。
- IDragProvider::D ropEffect 和 IDragProvider::D ropEffects 屬性是來源/目標樣式實作的必要屬性,而且禁止用於來源/目標樣式實作。 在來源/目標樣式實作中,可以查詢置放目標元素的卸除效果。
- IDragProvider::GrabbedItems 屬性代表拖曳多個專案。 當使用者開始拖曳作業時,您必須建立新的UI自動化元素,以做為事件來源元素。 這個新元素會引發來源專案在來源/目標或僅限來源模式中引發的所有事件,而實際拖曳的任何專案都不會引發任何事件。 當拖曳作業完成時,終結事件來源專案。
- 元素必須在變更時引發 DropEffect(UIA_DragDropEffectPropertyId)和 DropEffects (UIA_DragDropEffectsPropertyId) 屬性的屬性變更事件。 允許其他屬性的屬性變更事件,但可以從所需的 DragStart (UIA_Drag_DragStartEventId)、DragCancel (UIA_Drag_DragCancelEventId) 和 DragComplete (UIA_Drag_DragCompleteEventId) 事件推斷。
IDragProvider 的必要成員
實作 IDragProvider 介面需要下列屬性和方法。
必要成員 | 成員類型 | 筆記 |
---|---|---|
IsGrabbed | 財產 | 沒有 |
DropEffect | 財產 | 實作僅限來源樣式的必要專案。 |
DropEffects | 財產 | 如果擷取的專案有一個以上的可能下降效果,則為必要專案。 |
GetGrabbedItems | 方法 | 多專案拖曳作業的必要專案。 |
UIA_Drag_DragStartEventId | 事件 | 沒有 |
UIA_Drag_DragCancelEventId | 事件 | 沒有 |
UIA_Drag_DragCompleteEventId | 事件 | 沒有 |
相關主題