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;

私の問題は、これが 3 回発砲していることです。同じハンドラーを使用する複数の画像があり、それらはすべて同じ問題を抱えています。イベント ハンドラーの配線行を 1 つを除いてすべてコメント アウトしようとしましたが、違いはありませんでした。これは起こるはずですか、それとも私は何か間違ったことをしましたか? これが発生する場合、イベントが複数回発生する中から 1 つの論理タップをどのように判断すればよいでしょうか?

4

1 に答える 1

1

OnApplyTemplate複数回呼び出すことができるため、Tapイベントハンドラーを複数回アタッチする可能性があります。少しハックですが、イベント ハンドラーを削除してから追加すると、ほとんどの場合、イベント ハンドラーが 1 回だけアタッチされるようになります。

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