拖动控件模式

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

实现准则和约定

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

  • IDragProvider 接口支持两种不同的拖动样式:源/目标样式和仅源样式。 你需要选择最适合拖放方案的样式:
    • 源/目标样式: 每个可能的放置目标都由实现 IDropTargetProvider 接口的元素表示。 在拖动操作期间,Microsoft UI 自动化事件源自正在拖动的元素和拖放目标元素。
    • 仅源样式:放置目标不由UI 自动化元素表示。 在拖动操作期间,事件仅源自正在拖动的元素。
  • IDragProvider 是一个只读接口,用于监视拖动操作。 不能使用它来控制拖动操作。 可以通过将鼠标输入发送到控件来自动执行拖动操作。
  • IDragProvider::IsGrabbed 属性是必需的。
  • 仅源样式实现需要 IDragProvider::D ropEffectIDragProvider::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 事件

 

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

DropTarget 控件模式

UI 自动化控件模式概述

UI 自动化树概述

UI 自动化拖放支持