Quantcast
Channel: Windows Presentation Foundation (WPF) forum
Viewing all articles
Browse latest Browse all 18858

Touch Move events not working for child when Touch Move event of parent is working

$
0
0

When Moving touch on Window Touch Move of Window is called but when touch move reaches Child (Ellipse)

Touch Move event is not fired But I atleast I want to identify if the Touch is on Ellipse or not. as it it works on mouse move

This is my Xaml code

<Window x:Class="TouchEvent.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" IsManipulationEnabled="True" TouchMove="Window_TouchMove"><Canvas Name="MainCanvas" Height="350" Width="525" Background="Gray" ><!-- 
        The ellipse that will be dragged around. 
         The Top and Left attributes must be set 
         or Canvas.GetTop and Canvas.GetLeft will return NaN. 
         --><Ellipse IsManipulationEnabled="True" 
             Name="DragEllipse" 
             Canvas.Top="0" Canvas.Left="0" 
             Fill="Red" 
             Width="100" Height="100" 
             TouchDown="DragEllipse_TouchDown"
             TouchMove="DragEllipse_TouchMove"
             TouchLeave="DragEllipse_TouchLeave"></Ellipse></Canvas></Window>

This is my .CS Code

// Declare the global variables.
TouchDevice ellipseControlTouchDevice;
Point lastPoint;

private void DragEllipse_TouchDown(object sender, TouchEventArgs e)
{
             // Capture to the ellipse.  
             e.TouchDevice.Capture(this.DragEllipse);

             // Remember this contact if a contact has not been remembered already.  
             // This contact is then used to move the ellipse around.
             if (ellipseControlTouchDevice == null)
             {
                 ellipseControlTouchDevice = e.TouchDevice;

                 // Remember where this contact took place.  
                 lastPoint = ellipseControlTouchDevice.GetTouchPoint(this.MainCanvas).Position;
             }

             // Mark this event as handled.  
             e.Handled = true;
}

private void DragEllipse_TouchMove(object sender, TouchEventArgs e)
{
             if (e.TouchDevice == ellipseControlTouchDevice)
             {
                 // Get the current position of the contact.  
                 Point currentTouchPoint = ellipseControlTouchDevice.GetTouchPoint(this.MainCanvas).Position;

                 // Get the change between the controlling contact point and
                 // the changed contact point.  
                 double deltaX = currentTouchPoint.X - lastPoint.X;
                 double deltaY = currentTouchPoint.Y - lastPoint.Y;

                 // Get and then set a new top position and a new left position for the ellipse.  
                 double newTop = Canvas.GetTop(this.DragEllipse) + deltaY;
                 double newLeft = Canvas.GetLeft(this.DragEllipse) + deltaX;

                 Canvas.SetTop(this.DragEllipse, newTop);
                 Canvas.SetLeft(this.DragEllipse, newLeft);

                 // Forget the old contact point, and remember the new contact point.  
                 lastPoint = currentTouchPoint;

                 // Mark this event as handled.  
                 e.Handled = true;
             }
}

private void DragEllipse_TouchLeave(object sender, TouchEventArgs e)
{
             // If this contact is the one that was remembered  
             if (e.TouchDevice == ellipseControlTouchDevice)
             {
                 // Forget about this contact.
                 ellipseControlTouchDevice = null;
             }

             // Mark this event as handled.  
             e.Handled = true;
}

private void Window_TouchMove(object sender, TouchEventArgs e)
{
             if (e.Source.GetType() != typeof(TouchEvent.MainWindow))
             {

             }
         }


     }
}


Viewing all articles
Browse latest Browse all 18858

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>