Windows 8 长按适用于非触摸设备Windows 8

Windows 8 长按适用于非触摸设备Windows 8,windows-8,long-press,Windows 8,Long Press,我一直在为Win 8开发一个应用程序。该应用程序使用长按。它在触摸设备上运行良好。但现在我意识到另一件事,长按在非触摸设备中不起作用。当我在本地机器上运行应用程序时,所有内容都呈现出来,但长时间的触摸消失了 非接触式电脑上是否不再有按键 我在触摸屏和非触摸pc上查看应用程序,同一个应用程序示例日历的行为不同。在两种设备中,点击/触摸日期打开的页面不同?他们如何做到这一点?维护不同的代码 我需要长按我的应用程序。如何在非触摸式pc上运行它?鼠标右键单击将显示导航栏!!我需要在holding和poi

我一直在为Win 8开发一个应用程序。该应用程序使用长按。它在触摸设备上运行良好。但现在我意识到另一件事,长按在非触摸设备中不起作用。当我在本地机器上运行应用程序时,所有内容都呈现出来,但长时间的触摸消失了

非接触式电脑上是否不再有按键

我在触摸屏和非触摸pc上查看应用程序,同一个应用程序示例日历的行为不同。在两种设备中,点击/触摸日期打开的页面不同?他们如何做到这一点?维护不同的代码

我需要长按我的应用程序。如何在非触摸式pc上运行它?鼠标右键单击将显示导航栏!!我需要在holding和pointer事件中编写相同的代码

现在我该怎么办!
(惊慌失措!)

您可以使用计时器以及指针压缩和指针删除事件来模拟此过程

您可以创建这样的简单计时器

private bool\u isTimerActive=false;
私有整数_timeInMS=0;
专用常量整数延迟=1500;//等待1.5秒
私有异步void StartTimer()
{
_isTimerActive=true;
while(_isTimerActive)
{
等待任务。延迟(10);
_timeInMS+=10;
如果(_timeInMS>延迟)
{
_holdingAction(null,null);//在按住1.5秒后执行适当的操作
停止计时器();
}
}
}
私有void StopTimer()
{
_isTimerActive=false;
_timeInMS=0;
}
然后必须为.cs中的每个按钮添加事件处理程序,因为按钮控件不允许触发PointerPressed和PointerReleased事件

就像这样:

MyButton.AddHandler(PointerPressedEvent,新的PointerEventHandler(Button\u PointerPressed),true);
MyButton.AddHandler(PointerReleaseEvent,新的PointerEventHandler(Button\u PointerReleased),true);
最后,您可以使用委托为每个按钮定义操作

private delegate void HoldingAction(对象发送方,HoldingRoutedEventArgs e);
私人控股行动(u控股行动);;
//你的长期新闻发布会
私有无效按钮\u保持(对象发送器,保持路由目标e)
{
//你的代码太棒了。
}
私有无效按钮\u指针按下(对象发送方,PointErroroutedEventArgs e)
{
StartTimer();
_保持动作=按钮保持;
}
私有无效按钮\u PointerReleased(对象发送方,PointerRoutedEventArgs e)
{
停止计时器();
}

谢谢你的回答。但是,如果我有一个
按钮\u单击
按钮
,我还需要在它上挂上一个长的单击按钮,该怎么办?我尝试了您的答案,但似乎根本没有调用
PointerReleased
处理程序。有什么建议吗?