为Win 8 Metro应用程序的C#按钮举行活动

为Win 8 Metro应用程序的C#按钮举行活动,c#,windows-8,windows-runtime,visual-studio-2012,C#,Windows 8,Windows Runtime,Visual Studio 2012,我在windows phone marketplace中发布了一个应用程序,我正在尝试移植它以获得8。我正在使用Win 8的Windows 8版本预览版和Visual Studio Express RC 2012,代码是C#XAML 我已经创建了一个定制的6x7日历。前7个按钮放入第一个堆叠面板,下一个按钮放入另一个面板,依此类推。因此有6个堆叠面板容纳42个按钮。所有这些堆叠面板都放入网格中,便于定位 每个按钮都与名为OnLongPress的保持事件处理程序相关联。所以我面临的问题是,当按下一

我在windows phone marketplace中发布了一个应用程序,我正在尝试移植它以获得8。我正在使用Win 8的Windows 8版本预览版和Visual Studio Express RC 2012,代码是
C#XAML

我已经创建了一个定制的6x7日历。前7个按钮放入第一个
堆叠面板
,下一个按钮放入另一个面板,依此类推。因此有6个
堆叠面板
容纳42个按钮。所有这些堆叠面板都放入
网格中
,便于定位

每个按钮都与名为OnLongPress的保持事件处理程序相关联。所以我面临的问题是,当按下一个按钮时,OnLongPress函数会被调用两次。在调试时,我发现第一次,
保持状态
启动的
,下一次调用时,
保持状态
id
完成的
。我不明白为什么它被调用了两次

是不是因为事件被冒泡了??:(


如果有人能给我一些启示,那将是很有帮助的,因为我是新的Win 8开发人员。

我已经解决了两次调用的问题保持事件,一次在处理状态启动,一次在完成,包括以下检查。我仍然不确定这是否是正确的方法

if (e.HoldingState == Windows.UI.Input.HoldingState.Started)

如果您只希望事件在保持状态为“完成”或“取消”时仅触发一次,请尝试使用
rightstapped

按住按钮用于信息用户界面,但对于显示上下文菜单等交互,您应该使用
右键点击
。您可以先按住按钮以显示菜单将出现的提示,但要显示菜单本身,请使用
右键点击
处理程序。请参阅触摸交互设计或常用指南r交互,了解有关如何在应用程序设计中使用保持交互的更多信息


RightTapped
用于触摸操作的结果是处理在一个位置保留一定时间的操作。如果是触摸操作,则来自同一元素的保持事件始终在该操作之前发生,但
RightTapped
将在释放触摸点之前不会触发。如果按下指针的时间太短且不正确apped将触发而不是Hold,或者如果Hold操作以取消的
HoldingState
结束,
RightTapped
将不会触发。

您在哪里分配“OnLongPress”在XAML或代码中或两者中保存事件的处理程序?如果在代码隐藏、构造函数或任何其他事件处理程序中?显示事件处理程序分配code@nkchandra处理程序是在xaml.private void OnLongPress(对象发送方,holdingRoutedEventTargets e){System.Diagnostics.Debug.WriteLine(“OnLongPress”)中分配的;如果(e.HoldingState==Windows.UI.Input.HoldingState.Started){mKeyBoard.onKeyPress(发送方);}否则{System.Diagnostics.Debug.WriteLine(“已完成”+Windows.UI.Input.HoldingState.completed);}我是以这种方式实现的,按住按钮mKeyBoard.onKeyPress(发送方)方法在后台执行的迭代如何在该方法中实现?
if (e.HoldingState == Windows.UI.Input.HoldingState.Started)