拖动控件模式

提供 IDragProvider(包括有关属性和方法的信息)实现 拖动 控件模式的准则和约定。 拖动 控件模式用于支持可拖动控件或具有可拖动项的控件。

实施准则和约定

实现 拖动 控件模式时,请使用以下准则和约定:

  • IDragProvider 接口支持两种不同的拖动样式:源/目标样式和仅源样式。 你需要选择最适合拖放方案的样式:
    • 源/目标样式: 每个可能的放置目标都由实现 IDropTargetProvider 接口的元素表示。 在拖动作期间,Microsoft UI 自动化事件源自正在拖动的元素以及拖放目标元素。
    • 仅源样式: Drop 目标不由 UI 自动化元素表示。 在拖动作期间,事件仅源自正在拖动的元素。
  • IDragProvider 是用于监视拖动作的只读接口。 不能使用它来控制拖动作。 可以通过将鼠标输入发送到控件来自动执行拖动作。
  • IDragProvider::IsGrabbed 属性是必需的。
  • IDragProvider::D ropEffectIDragProvider::D ropEffects 属性是仅源样式实现所必需的,并且对于源/目标样式实现是禁止的。 在源/目标样式实现中,可以查询放置目标元素的删除效果。
  • IDragProvider::GrabbedItems 属性表示拖动多个项。 当用户开始拖动作时,需要创建新的 UI 自动化元素来充当事件源元素。 此新元素会激发源元素在源/目标模式或仅源模式下触发的所有事件,而实际拖动的任何元素都没有触发任何事件。 拖动作完成后,销毁事件源元素。
  • 元素必须在更改时为 DropEffectUIA_DragDropEffectPropertyId) 和 DropEffectsUIA_DragDropEffectsPropertyId) 属性触发属性更改事件。 允许其他属性的属性更改事件,但可以从所需的 dragStartUIA_Drag_DragStartEventId)、 DragCancelUIA_Drag_DragCancelEventId) 和 DragCompleteUIA_Drag_DragCompleteEventId) 事件推断。

IDragProvider 所需的成员

实现 IDragProvider 接口需要以下属性和方法。

必需成员 成员类型 笔记
IsGrabbed 财产 没有
DropEffect 财产 仅源样式的实现所必需的。
DropEffects 财产 如果捕获的项有多个可能的下降效果,则为必需。
GetGrabbedItems 方法 多项拖动作是必需的。
UIA_Drag_DragStartEventId 事件 没有
UIA_Drag_DragCancelEventId 事件 没有
UIA_Drag_DragCompleteEventId 事件 没有

 

控件类型及其支持的控件模式

DropTarget 控件模式

UI 自动化控件模式概述

UI 自动化树概述

UI 自动化对拖放 的支持