我在Windows手机市场上发布了一个应用程序,我试图移植到Win 8.我正在使用Windows 8 Release Preview和Visual Studio Express RC 2012 for Win 8,代码为C#-XAML
。在C#中为Win 8 Metro应用程序举办Button事件
我已经创建了一个自定义的6x7日历。前7个按钮放入第一个StackPanel
,下一个放到另一个面板中等等。所以有6个按钮可以容纳42个按钮。所有这些StackPanel被放置在Grid
中以便于定位。
每个按钮都与名为OnLongPress的Holding
EventHandler相关联。所以我面临的问题是当按下按钮时,OnLongPress函数被调用两次。在调试时,我发现第一次,Holding state
为Started
,下次调用时,Holding state
ID为Completed
。我无法弄清楚为什么它被调用两次。
是因为事件冒泡吗? :(
private void OnLongPress(object sender, HoldingRoutedEventArgs e)
{
Button butClicked = (Button)sender;
int iNumClicked = Convert.ToInt32(butClicked.Content.ToString());
CycleManager pCycMan = CycleManager.Instance;
string iVal, jVal;
int iRow, jCol;
string butName = butClicked.Name;
iVal = butName.Substring(1, 1);
jVal = butName.Substring(2, 1);
iRow = Convert.ToInt32(iVal);
jCol = Convert.ToInt32(jVal);
DateTime dtSelDate = new DateTime(m_yearBuffer[iRow, jCol], m_monthBuffer[iRow, jCol], iNumClicked);
int trackingStatus = pCycMan.IsDateOkForHistory(dtSelDate);
// setting or resetting few colors based on few checks
}
这将是有益的,如果有人能提供一些线索,因为我是新来赢得8开发。
您在哪里将“OnLongPress”处理程序分配给Holding事件,XAML中还是代码中或两者中?如果在代码后面,在构造函数或任何其他事件处理程序中?显示事件处理程序分配代码 – nkchandra
@nkchandra处理程序在xaml中分配。 – alfah