Пример #1
0
        public static void setWidgetClickHandler(Windows.UI.Xaml.UIElement widget, System.Action handler)
        {
            if (widget is cave.ui.CustomContainerWidget)
            {
                if (!(handler != null))
                {
                    ((cave.ui.CustomContainerWidget)widget).togglePointerEventHandling(false);
                }
                else
                {
                    ((cave.ui.CustomContainerWidget)widget).togglePointerEventHandling(true);
                }
            }
            if (cave.ui.Widget.existingWidgetClickHandler != null)
            {
                widget.PointerReleased -= existingWidgetClickHandler;
                cave.ui.Widget.existingWidgetClickHandler = null;
            }
            if (handler != null)
            {
                existingWidgetClickHandler = async(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e) => {
                    singleClick = true;
                    await System.Threading.Tasks.Task.Delay(200);

                    if (singleClick)
                    {
                        handler();
                    }
                };
                widget.PointerReleased += existingWidgetClickHandler;
            }
        }
        /// <summary>
        /// Helper for adding mouse events
        /// </summary>
        /// <param name="view">The view to listen for events on.</param>
        /// <param name="onMove">Action when the mouse moves.</param>
        /// <param name="onTapped">Action when the view is tapped.</param>
        /// <param name="onDoubleTapped">Action when the view is double tapped.</param>
        /// <returns>An Action that cleans up all the event handlers.</returns>
        private static Action SetUpHandlers(SceneView view, Action <MapPoint> onMove, Action <MapPoint> onTapped, Action <MapPoint> onDoubleTapped)
        {
#if NETFX_CORE
            Windows.UI.Xaml.Input.PointerEventHandler movehandler = null;
#else
            System.Windows.Input.MouseEventHandler movehandler = null;
#endif

            if (onMove != null)
            {
#if NETFX_CORE
                movehandler        = (s, e) => onMove(view.ScreenToLocation(e.GetCurrentPoint(view).Position));
                view.PointerMoved += movehandler;
#else
                movehandler     = (s, e) => onMove(view.ScreenToLocation(e.GetPosition(view)));
                view.MouseMove += movehandler;
#endif
            }
            EventHandler <MapViewInputEventArgs> tappedHandler = null;
            if (onTapped != null)
            {
                tappedHandler         = (s, e) => onTapped(e.Location);
                view.SceneViewTapped += tappedHandler;
            }
            EventHandler <MapViewInputEventArgs> doubletappedHandler = null;
            if (onDoubleTapped != null)
            {
                doubletappedHandler         = (s, e) => { e.Handled = true; onDoubleTapped(e.Location); };
                view.SceneViewDoubleTapped += doubletappedHandler;
            }
            Action cleanup = () =>
            {
                if (movehandler != null)
#if NETFX_CORE
                { view.PointerMoved -= movehandler; }
#else
                { view.MouseMove -= movehandler; }
#endif
                if (tappedHandler != null)
                {
                    view.SceneViewTapped -= tappedHandler;
                }
                if (doubletappedHandler != null)
                {
                    view.SceneViewDoubleTapped -= doubletappedHandler;
                }
            };
            return(cleanup);
        }