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>