我有一个基本的图像控件,我在XAML中添加到我正在制作的控件中。然后在控件中的 OnApplyTemplate 方法中,我将 Tapped 事件处理程序添加到图像中。
(GetTemplateChild("PART_quarter") as Image).Tapped += tcNoteSelector_Tapped;
在tapped事件处理程序中,我有以下代码:
System.Diagnostics.Debug.WriteLine("Sender: {0}", (sender as Image).Name);
e.Handled = true;
我的问题是这是三次射击。我有多个图像使用相同的处理程序,他们都有同样的问题。我尝试评论除了一个事件处理程序接线之外的所有事情,但这没有什么区别。这应该发生还是我做错了什么?如果发生这种情况,我应该如何确定事件发生多次的单个逻辑抽头?
答案 0 :(得分:1)
OnApplyTemplate
可以多次调用,因此可能会多次附加Tap
事件处理程序。有点hacky,但删除然后添加事件处理程序应该在大多数情况下工作,以确保事件处理程序只附加一次。
Image img = GetTemplateChild("PART_quarter") as Image;
if(img != null)
{
img.Tapped -= tcNoteSelector_Tapped;
img.Tapped += tcNoteSelector_Tapped;
}