3

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

(GetTemplateChild("PART_quarter") as Image).Tapped += tcNoteSelector_Tapped;

在点击的事件处理程序中,我有以下代码:

System.Diagnostics.Debug.WriteLine("Sender: {0}", (sender as Image).Name);
e.Handled = true;

我的问题是这会触发三次。我有多个使用相同处理程序的图像,它们都有相同的问题。我尝试注释掉除一条事件处理程序连线之外的所有内容,但这并没有什么不同。这是应该发生的还是我做错了什么?如果这应该发生,我应该如何从事件触发的多次中确定单个逻辑点击?

4

1 回答 1

1

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

Image img = GetTemplateChild("PART_quarter") as Image;
if(img != null)
{
   img.Tapped -= tcNoteSelector_Tapped;
   img.Tapped += tcNoteSelector_Tapped;
}
于 2013-03-28T20:43:47.353 回答