ジェレミーの答えは完全に正確ではありません。別のスレッドで、誰かがタップがクリックと同じように機能しないという問題があり、すばやく連続してクリック/タップしたときに問題が発生したと報告しました。以下のコードで簡単に再現でき、ポインター イベントに簡単に拡張できます。
public sealed partial class MainPage : Page
{
private int clicks = 0;
private int taps = 0;
public MainPage()
{
this.InitializeComponent();
var button = new Button();
button.Width = 500;
button.Height = 200;
button.Content = string.Format("Clicks: {0}, Taps: {1}", clicks, taps);
button.Click += (s, e) => button.Content = string.Format("Clicks: {0}, Taps: {1}", ++clicks, taps);
button.Tapped += (s, e) => button.Content = string.Format("Clicks: {0}, Taps: {1}", clicks, ++taps);
this.Content = button;
}
}
Click
通常のボタンで処理する必要があるものです。ボタンに期待されるロジックを備えています。私が考えることができるものの中には、
- マウスだけでなくキーボードでも動作します
- ボタンを押してゆっくり離しても動作します
- 押したときにボタンからドラッグしてキャンセルすることも、以前にボタンを押した後にドラッグして戻すことで再開することもできます
- 一度に 1 つのボタンに制限されているため、2 つのボタンを一緒にクリックしようとすると、最初に触れたボタンはクリックしません (マルチユーザー操作をサポートする元の Surface/PixelSense とは異なります!)。
- 自動化など、Windowsのアクセシビリティ機能でよりうまく機能する可能性があります
- それは常に機能します
サンプル コードで示されているようにTapped
、タップを繰り返した場合、すべてのタップに対してイベントが登録されるわけではありません。これが、根底にあるジェスチャ認識ロジックの一部がダブルタップを認識したり、他の理由で他のすべてのタップを単に拒否したりするためかどうかはわかりません. これは、シングル タッチ/ペン タップまたはマウス クリックの素早い操作で機能しますがUIElement
、任意の UI 要素でのタップ、ダブル タップ、右タップ (!)、またはホールドを区別したい場合に使用できる汎用イベントです。 .
ポインター イベントは低レベルであり、フレームワークにまだ組み込まれていない少し高度な対話を処理するために使用できます。前述したように、クリックは、ボタンを押すこととそれに伴うリリースの両方で構成されるため、同様の相互作用をポインター イベントでモデル化できます。たとえば、クリックではできなかった多くの UI 要素を同時にマッシュしたい、ある種のもぐらたたきとツイスターの組み合わせタイプのゲームを実装するために使用できます。