alf*_*fah 2 c# windows-8 windows-runtime visual-studio-2012
我在Windows手机市场上发布了一个应用程序,我正在尝试移植到Win 8.我正在使用Windows 8 Release Preview和Visual Studio Express RC 2012 for Win 8,代码是C#-XAML.
我创建了一个自定义的6x7日历.前7个按钮放入第一个StackPanel,下一个放入另一个面板,依此类推.所以有6个StackPanels按住42个按钮.所有这些StackPanel都被放入一个Grid便于定位.
每个按钮都与Holding名为OnLongPress 的EventHandler 相关联.所以我面临的问题是当按下一个按钮时,OnLongPress函数被调用两次.在调试时,我发现第一次,Holding state是Started和下次调用时,Holding stateid 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
}
Run Code Online (Sandbox Code Playgroud)
如果有人因为我是Win 8 dev的新手而有所帮助,那将会很有帮助.
我已经解决了两次调用持有事件的问题,一旦启动处理状态,一旦完成,包括以下检查.我还不确定这是不是正确的方法.
if (e.HoldingState == Windows.UI.Input.HoldingState.Started)
Run Code Online (Sandbox Code Playgroud)