在WPF应用程序中禁用右键单击(按住)。

在WPF应用程序中禁用右键单击(按住)。,wpf,touch,right-click,windows-xp-embedded,Wpf,Touch,Right Click,Windows Xp Embedded,我正在开发运行在Windows XP标准上的触摸屏应用程序。使用当前的硬件来调用右键单击,用户必须单击并按住几秒钟,但这可能会干扰其他操作,例如在scrollviewer中按住重复按钮,因此我决定禁用右键单击 理想情况下,我不想在应用程序级别禁用右键单击,但如果不可能,在windows级别禁用右键单击也会对我起作用。您可以覆盖窗口上的OnPreviewMouseRightButtonDown并将Handled设置为true。您还需要处理OnPreviewMouseRightButtonUp(感谢

我正在开发运行在Windows XP标准上的触摸屏应用程序。使用当前的硬件来调用右键单击,用户必须单击并按住几秒钟,但这可能会干扰其他操作,例如在scrollviewer中按住重复按钮,因此我决定禁用右键单击


理想情况下,我不想在应用程序级别禁用右键单击,但如果不可能,在windows级别禁用右键单击也会对我起作用。

您可以覆盖窗口上的OnPreviewMouseRightButtonDown并将Handled设置为true。您还需要处理OnPreviewMouseRightButtonUp(感谢Vitalij指出这一点)


这应该可以解决问题。

OnPreviewMouseRightButtonDown/Up方法对我不起作用

  • 但是,UIElement上有一个属性。将其设置为false以摆脱按住鼠标右键单击的行为。我在Windows7上用.NET4.0测试了这一点,但该属性可从.NET3.0获得

  • 还有一个blogpost为类似的在窗口级别禁用按住提供了代码示例。但是有了它,PreviewTouchDown和着地事件不会在手指触摸屏幕时立即触发(我想这对于RepeatButton是必要的),只会在以后触发。阅读上的“备注”


  • 您的意思是将OnPreviewMouseRightButtonDown添加到UI元素?如果您在窗口上处理OnPreviewMouseRightButtonDown,您将比其他人先处理它。。。你不需要一直在处理每一个控制权!忘记了窗口是从UIElement派生的,因此具有所有鼠标事件。唯一的问题是,您必须将OnPreviewMouseRightButtonDown和OnPreviewMouseRightButtonUp标记为已处理。我确认Stylus.IsPressAndHoldEnabled解决方案也可以在Windows 8中工作:-)谢谢!我知道这比较旧,但我也确认Stylus.IsPressAndHoldEnabled解决方案适用于Windows 10。谢谢。我需要使用它来删除“按住效果矩形”。由于对WPF使用触摸屏还不熟悉,因此很难找到答案。