private void PointerDetectUIElement_PointerCanceled(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            PointerPoint win10PointerPoint = e.GetCurrentPoint(PointerDetectUIElement);
            RXPointer    pointer           = new RXPointer(this);

            pointer.Win10PointerPoint = win10PointerPoint;
            System.Diagnostics.Debug.WriteLine("Canceled:" + pointer);
        }
        private void PointerDetectUIElement_PointerExited(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            PointerPoint win10PointerPoint = e.GetCurrentPoint(PointerDetectUIElement);

            lock (PointerDict)
            {
                if (PointerDict.ContainsKey(win10PointerPoint.PointerId))
                {
                    RXPointer pointer = PointerDict[win10PointerPoint.PointerId] as RXPointer;
                    pointer.UpdatePointer(win10PointerPoint, PointerState.Exited);
                    PointerDict.Remove(win10PointerPoint.PointerId);
                    PointerExited?.Invoke(this, pointer);
                }
            }
        }
        private void PointerDetectUIElement_PointerMoved(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            PointerPoint win10PointerPoint = e.GetCurrentPoint(PointerDetectUIElement);

            lock (PointerDictLock)
            {
                if (PointerDict.ContainsKey(win10PointerPoint.PointerId))
                {
                    RXPointer pointer = PointerDict[win10PointerPoint.PointerId] as RXPointer;
                    pointer.UpdatePointer(win10PointerPoint, pointer.LatestState);
                    PointerMoved?.Invoke(this, pointer);
                }
                else
                {
                    throw new NotImplementedException();
                }
            }
        }
        private void PointerDetectUIElement_PointerEntered(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
        {
            PointerPoint win10PointerPoint = e.GetCurrentPoint(PointerDetectUIElement);

            lock (PointerDict)
            {
                if (PointerDict.ContainsKey(win10PointerPoint.PointerId))
                {
                    throw new NotImplementedException();
                }
                else
                {
                    RXPointer pointer = new RXPointer(this);
                    pointer.UpdatePointer(win10PointerPoint, PointerState.Entered);
                    PointerDict.Add(pointer.Win10PointerPoint.PointerId, pointer);
                    PointerEntered?.Invoke(this, pointer);
                }
            }
        }