拖动控件模式
提供有关使用 IDragProvider 实现拖动控件模式的准则和约定,包括有关属性和方法的信息。 拖动控件模式用于支持可拖动控件或具有可拖动项的控件。
实现准则和约定
实现 拖动 控件模式时,请使用以下准则和约定:
-
IDragProvider 接口支持两种不同的拖动样式:源/目标样式和仅源样式。 你需要选择最适合拖放方案的样式:
- 源/目标样式: 每个可能的放置目标都由实现 IDropTargetProvider 接口的元素表示。 在拖动操作期间,Microsoft UI 自动化事件源自正在拖动的元素和拖放目标元素。
- 仅源样式:放置目标不由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 | 事件 | 无 |
相关主题