拖动控件模式
提供 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 | 事件 | 没有 |
相关主题