気になったのでTouchとMouseとStylusイベントの動きを軽く見てみました。軽くというのは時間がないので****Down系イベントだけ拾ってみました。Backgroundを指定したBorderを置いてCheckBoxを3つおく。
<Window x:Class="StylusCheckApp.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow"Height="350"Width="525"><Grid><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition/></Grid.RowDefinitions><Border BorderBrush="Black"BorderThickness="1"Margin="10"Grid.Row="3"StylusDown="Border_StylusDown"MouseDown="Border_MouseDown"TouchDown="Border_TouchDown"Background="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/><CheckBox x:Name="checkBoxStylus"Content="Handle Stylus"Margin="10"/><CheckBox x:Name="checkBoxMouse"Content="Handle Mouse"Grid.Row="1"Margin="10"/><CheckBox x:Name="checkBoxTouch"Content="Handle Touch"Grid.Row="2"Margin="10"/></Grid></Window>
んで、コードビハインドでデバッグログを吐くだけ。
using System.Diagnostics; using System.Windows; using System.Windows.Input; namespace StylusCheckApp { publicpartialclass MainWindow : Window { public MainWindow() { InitializeComponent(); } privatevoid Border_StylusDown(object sender, StylusDownEventArgs e) { Debug.WriteLine("StylusDown"); e.Handled = this.checkBoxStylus.IsChecked.Value; } privatevoid Border_MouseDown(object sender, MouseButtonEventArgs e) { Debug.WriteLine("MouseDown"); e.Handled = this.checkBoxMouse.IsChecked.Value; } privatevoid Border_TouchDown(object sender, TouchEventArgs e) { Debug.WriteLine("TouchDown"); e.Handled = this.checkBoxTouch.IsChecked.Value; } } }
実行してみる。
マウスクリック MouseDown タッチ StylusDown TouchDown MouseDown スタイラスでツン StylusDown MouseDown
ちょっとびっくりしたのがタッチしても最初のイベントはスタイラス。ほほう…。ではStylusでHandledをTrueにすると…。
マウスクリック MouseDown タッチ StylusDown MouseDown スタイラスでツン StylusDown MouseDown
タッチイベントはスキップされたけどマウスイベントにはいっちゃうのか。んじゃ、タッチイベントだけHandledをTrueにすると…。
マウスクリック MouseDown タッチ StylusDown TouchDown MouseDown スタイラスでツン StylusDown MouseDown
ほう…。
まとめ
****Down系イベントだけを見るとMouseイベントの前にStylus→Touch→Mouseときたらタッチ操作で、Stylus→MouseときたらスタイラスでMouseだけだとマウスということになります。
Preview****系とか、その他もろもろのStylus*****系イベントとかを駆使すると、もっと何かかわるのかもしれないけど、続きは後日の自分か誰か…。