Все события сенсорного взаимодействия порождают соответствующие события мыши.
Так, для Grid достаточно подписаться на MouseDown (можно как на Right button, так и на Left button), MouseUp, MouseMove и все события стилуса будут происходить совместно с событиями мыши. Таким образом, здесь нет смысла подписываться на SlylusDown, SlylusUp и StylusMove.
Однако, стоит только поменять Grid на ListView, как подобная удобная штука пропадает...
Код, которого достаточно для иллюстрации проблемы:
private void listView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
Debug.WriteLine("DOWN");
}
private void listView_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
Debug.WriteLine("UP");
}
private void listView_MouseMove(object sender, MouseEventArgs e) {
Debug.WriteLine("MOVE");
}
Ответ
Вообщем то, точнее, только при StylusMove не происходит MouseMove.
Такие события стилуса как Down и Up, всё таки порождают соответствующие события мыши.
В качестве решения предлагаю следующий простой код:
private void listView_MouseMove(object sender, MouseEventArgs e) {
HandleMouseMove(sender, e.GetPosition(sender as IInputElement));
}
private void ListView_StylusMove(object sender, StylusEventArgs e) {
HandleMouseMove(sender, e.GetPosition(sender as IInputElement));
}
private void HandleMouseMove(object sender, Point mousePos) {
Debug.WriteLine("MOVE: " + mousePos);
}
Комментариев нет:
Отправить комментарий