UIElement.RightTapped 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当指针位于 元素上时发生右点击输入刺激时发生。
public:
virtual event RightTappedEventHandler ^ RightTapped;
// Register
event_token RightTapped(RightTappedEventHandler const& handler) const;
// Revoke with event_token
void RightTapped(event_token const* cookie) const;
// Revoke with event_revoker
UIElement::RightTapped_revoker RightTapped(auto_revoke_t, RightTappedEventHandler const& handler) const;
public event RightTappedEventHandler RightTapped;
function onRightTapped(eventArgs) { /* Your code */ }
uIElement.addEventListener("righttapped", onRightTapped);
uIElement.removeEventListener("righttapped", onRightTapped);
- or -
uIElement.onrighttapped = onRightTapped;
Public Custom Event RightTapped As RightTappedEventHandler
<uielement RightTapped = "eventhandler" .../>
事件类型
注解
RightTapped 触摸操作的结果是处理在一个位置保留一定时间的操作。 如果是触摸操作,则来自同一元素的 Holding 事件始终位于此操作之前,但在释放触摸点之前不会触发 RightTapped。 如果按下指针的时间太短并且点击触发而不是 Holding,或者如果 HoldState 操作以 HoldingState 结束为 Canceled,则 RightTapped 不会触发。
RightTapped 是用于显示上下文菜单时要处理的事件。 有关如何在应用设计中使用右键单击 交互 的详细信息,请参阅 触摸交互设计和自定义用户交互的 UX 指南 。
RightTapped 事件表示手势,而 PointerReleased 事件是较低级别的输入事件。 RightTapped 和 PointerReleased 事件可以作为单个用户交互的结果触发。 即使控件已在控制逻辑中处理指针事件或正在处理操作,也不会阻止 RightTapped 触发。
RightTapped 事件可能是多个指针点的结果。 对于更高级别的手势事件(如 RightTapped),你不再能够立即访问 PointerPoint 详细信息,例如单个 PointerId 值或单个坐标。 你确实有权访问设备类型 (PointerDeviceType) ,对于坐标,可以调用 GetPosition,这会提供来自多个指针点的 RightTap 坐标的平均值。
RightTapped 是路由事件。 此外,元素必须具有 IsRightTapEnabled 为 true 才能成为 RightTapped 事件源, (true 是默认) 。 即使父元素上的 IsRightTapEnabled 为 false,如果事件从 IsRightTapEnabled 为 false 的事件源子元素浮升到父元素上,也可以处理 RightTapped。 有关路由事件概念的详细信息,请参阅 事件和路由事件概述。
对于触摸操作以及特定于交互的事件或一个触摸操作引起的操作事件,一个元素必须对点击测试可见,以用作事件源并触发与该操作关联的事件。 UIElement.Visibility 必须为 Visible。 派生类型的其他属性也会影响命中测试可见性。 有关详细信息,请参阅事件和路由事件概述。
RightTapped 支持将事件处理程序附加到将调用的路由,即使事件的事件数据标记为“ 已处理”也是如此。 请参阅 AddHandler。
特定Windows 运行时控件可能对 RightTapped 事件具有基于类的处理。 如果是这样,控件可能具有 OnRightTapped 方法的替代。 右键单击操作可能与显示上下文菜单或辅助窗口相关联。 有关事件基于类的处理工作原理的详细信息,请参阅 事件和路由事件概述。
鼠标和笔/触笔输入的 RightTapped
输入系统处理用户通过元素单击鼠标右键作为 RightTapped 操作的操作。 在释放鼠标右键之前,事件不会触发。 默认情况下,无论鼠标按钮按住多长时间或按住哪个按钮,鼠标输入都不会产生 Holding 事件。
某些笔设备有多个按钮,其中一个按钮的使用方式与使用鼠标设备上的右按钮的方式相同。 这取决于设备及其设置,但如果笔设备启用了等效的右键单击,则输入系统也可以为这些操作触发 RightTapped。
Windows 8 行为
Windows 8 对 RightTapped 事件的数据有问题,从 RightTappedRoutedEventArgs.GetPosition 获取的点的 X 和 Y 值被反转 (X 实际上是 Y;Y 真的是 X) 。 此问题已从 Windows 8.1 开始修复。 但是,如果你要重定目标 Windows 8 应用以Windows 8.1,你可能已有代码通过交换 X 和 Y 来解决此问题。 如果是这样,请在重新定位时删除该代码,因为问题现已修复。
为 Windows 8 编译但在Windows 8.1上运行的应用将继续使用此 Windows 8 行为。
此外,Windows 8 不包括 Shift+F10 的默认键处理,这会触发此事件,然后显示上下文菜单。 Shift+F10 通常是VK_APP虚拟键值 (Properties 键) 的辅助键组合,因此 Shift+F10 可能也会触发 RightTapped。 此问题已从 Windows 8.1 开始修复;Shift+F10 现在会触发 RightTapped。 可以将此更改视为某些控件的默认事件处理,这些控件具有文本的默认上下文菜单(如 TextBox),或者在调用自定义菜单和浮出控件时。
针对 Windows 8 编译但在 Windows 8.1 上运行的应用不使用此 Windows 8 行为,它们使用更正的Windows 8.1行为。