Windows 8 RT应用控制点击事件触发多次

本文关键字:事件 RT 应用 控制 Windows | 更新日期: 2023-09-27 18:06:28

我有一个基本的图像控件,我在XAML中添加到我正在制作的控件。然后在我的OnApplyTemplate方法在控制我使我添加一个Tapped事件处理程序到图像。

(GetTemplateChild("PART_quarter") as Image).Tapped += tcNoteSelector_Tapped;
在选中的事件处理程序中,我有以下代码:
System.Diagnostics.Debug.WriteLine("Sender: {0}", (sender as Image).Name);
e.Handled = true;

我的问题是这是三次射击。我有多个图像使用相同的处理程序,他们都有同样的问题。我试着注释掉所有的事件处理程序连线,但这并没有什么不同。这是应该发生的吗,还是我做错了什么?如果应该发生这种情况,我应该如何从事件触发的多次中确定单个逻辑tap ?

Windows 8 RT应用控制点击事件触发多次

OnApplyTemplate可以多次调用,因此它可以多次附加您的Tap事件处理程序。这有点粗糙,但删除然后添加事件处理程序应该在大多数情况下工作,以确保事件处理程序只附加一次。

Image img = GetTemplateChild("PART_quarter") as Image;
if(img != null)
{
   img.Tapped -= tcNoteSelector_Tapped;
   img.Tapped += tcNoteSelector_Tapped;
}