TouchDevice Class
Represents a single touch input produced by a finger on a touchscreen.
Assembly: PresentationCore (in PresentationCore.dll)
System.Windows.Threading.DispatcherObject
System.Windows.Input.InputDevice
System.Windows.Input.TouchDevice
| Name | Description | |
|---|---|---|
![]() | TouchDevice(Int32) | Called from constructors in derived classes to initialize the TouchDevice class. |
| Name | Description | |
|---|---|---|
![]() | ActiveSource | Gets the PresentationSource that is reporting input for this device.(Overrides InputDevice.ActiveSource.) |
![]() | Captured | Gets the element that captured the TouchDevice. |
![]() | CaptureMode | Gets the capture policy of the TouchDevice. |
![]() | DirectlyOver | Gets the element that the touch contact point is directly over. |
![]() | Dispatcher | Gets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.) |
![]() | Id | Gets the unique identifier of the TouchDevice, as provided by the operating system. |
![]() | IsActive | Gets a value that indicates whether the device is active. |
![]() | Target | Gets the element that receives input from the TouchDevice.(Overrides InputDevice.Target.) |
| Name | Description | |
|---|---|---|
![]() | Activate() | Adds the TouchDevice to the input messaging system. |
![]() | Capture(IInputElement) | Captures a touch to the specified element by using the Element capture mode. |
![]() | Capture(IInputElement, CaptureMode) | Captures a touch to the specified element by using the specified CaptureMode. |
![]() | CheckAccess() | Determines whether the calling thread has access to this DispatcherObject.(Inherited from DispatcherObject.) |
![]() | Deactivate() | Removes the TouchDevice from the input messaging system. |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetIntermediateTouchPoints(IInputElement) | When overridden in a derived class, returns all touch points that are collected between the most recent and previous touch events. |
![]() | GetTouchPoint(IInputElement) | Returns the current position of the touch device relative to the specified element. |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | OnCapture(IInputElement, CaptureMode) | Called when a touch is captured to an element. |
![]() | OnManipulationEnded(Boolean) | Called when a manipulation has ended. |
![]() | OnManipulationStarted() | Called when a manipulation is started. |
![]() | ReportDown() | Reports that a touch is pressed on an element. |
![]() | ReportMove() | Reports that a touch is moving across an element. |
![]() | ReportUp() | Reports that a touch was lifted from an element. |
![]() | SetActiveSource(PresentationSource) | Sets the PresentationSource that is reporting input for this device. |
![]() | Synchronize() | Forces the TouchDevice to synchronize the user interface with underlying touch points. |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
![]() | VerifyAccess() | Enforces that the calling thread has access to this DispatcherObject.(Inherited from DispatcherObject.) |
| Name | Description | |
|---|---|---|
![]() | Activated | Occurs when the TouchDevice is added to the input messaging system. |
![]() | Deactivated | Occurs when the TouchDevice is removed from the input messaging system. |
![]() | Updated | Occurs when a touch message is sent. |
| Name | Description | |
|---|---|---|
![]() ![]() | IManipulator.GetPosition(IInputElement) | Returns the position of the IManipulator object. |
![]() ![]() | IManipulator.ManipulationEnded(Boolean) | Occurs when a manipulation has ended. |
![]() ![]() | IManipulator.Id | Gets the unique identifier of the TouchDevice as provided by the operating system. |
You typically access a TouchDevice by using the TouchEventArgs.TouchDevice property. A TouchDevice represents a single touch on a screen. If multiple touches are present, use the Id property to distinguish between them.
Note |
|---|
This class contains an inheritance demand at the class level that applies to all members. A SecurityException is thrown when the derived class does not have full-trust permission. For more information about security demands, see Link Demands and Inheritance Demands. |
The following example enables you to create simple patterns on a Canvas by dragging two fingers on a touchscreen. Each touch is represented by a TouchDevice in the TouchEventArgs. The pattern is created by drawing a line between the touch points that are provided by the touches. This example requires a Windows Touch–compatible screen.
The following markup creates the user interface, which consists of a Canvas that is centered in a grid, and attaches the event handlers for the touch events.
<Window x:Class="WpfTouchEventsSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="525" Width="525"> <Grid> <Canvas x:Name="canvas1" Width="500" Height="500" Background="Black" TouchDown="canvas_TouchDown" TouchMove="canvas_TouchMove" TouchUp="canvas_TouchUp" /> </Grid> </Window>
The following code handles the touch events. When a touch is pressed on the Canvas, the TouchDevice is captured to the Canvas. When the touch is lifted, the TouchDevice is released. When a touch moves on the Canvas, the Id is checked. If the move came from the first touch, its location is recorded. If the move came from the second touch, a line is drawn from the position of the first touch to the position of the second touch.
using System.Windows; using System.Windows.Input; using System.Windows.Media; using System.Windows.Shapes; using System.Windows.Controls; namespace WpfTouchEventsSample { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { // Variables to track the first two touch points // and the ID of the first touch point. private Point pt1, pt2 = new Point(); private int firstTouchId = -1; public MainWindow() { InitializeComponent(); } private void canvas_TouchDown(object sender, TouchEventArgs e) { Canvas _canvas = (Canvas)sender as Canvas; if (_canvas != null) { _canvas.Children.Clear(); e.TouchDevice.Capture(_canvas); // Record the ID of the first touch point if it hasn't been recorded. if (firstTouchId == -1) firstTouchId = e.TouchDevice.Id; } } private void canvas_TouchMove(object sender, TouchEventArgs e) { Canvas _canvas = (Canvas)sender as Canvas; if (_canvas != null) { TouchPoint tp = e.GetTouchPoint(_canvas); // This is the first touch point; just record its position. if (e.TouchDevice.Id == firstTouchId) { pt1.X = tp.Position.X; pt1.Y = tp.Position.Y; } // This is not the first touch point; draw a line from the first point to this one. else if (e.TouchDevice.Id != firstTouchId) { pt2.X = tp.Position.X; pt2.Y = tp.Position.Y; Line _line = new Line(); _line.Stroke = new RadialGradientBrush(Colors.White, Colors.Black); _line.X1 = pt1.X; _line.X2 = pt2.X; _line.Y1 = pt1.Y; _line.Y2 = pt2.Y; _line.StrokeThickness = 2; _canvas.Children.Add(_line); } } } private void canvas_TouchUp(object sender, TouchEventArgs e) { Canvas _canvas = (Canvas)sender as Canvas; if (_canvas != null && e.TouchDevice.Captured == _canvas) { _canvas.ReleaseTouchCapture(e.TouchDevice); } } } }
for deriving from this class. Security action: InheritanceDemand. Associated enumeration: PermissionState.Unrestricted
Available since 4.0
Silverlight
Available since 3.0
Windows Phone Silverlight
Available since 7.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.







