ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

如何在Windows 10 UWP中为网格添加触摸操作事件?

2019-10-27 04:08:31  阅读:198  来源: 互联网

标签:windows-10-universal win-universal-app c


我目前正在Windows 10上工作,我想为用户添加滑动手势.因此,我做了一些研究,发现了操纵事件.我已经尝试了以下代码,但是当我使用鼠标指针而不是使用触摸滑动手势时它可以工作.

 pageLayoutGrid.ManipulationMode = ManipulationModes.TranslateX;
 pageLayoutGrid.ManipulationDelta += PageLayoutGrid_ManipulationDelta;
 pageLayoutGrid.ManipulationCompleted += LayoutManipulationCompleted;

 private void PageLayoutGrid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        e.Handled = true;
    }

    private void LayoutManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
    {
        var velocities = e.Velocities.Linear;
        Double swipeLeftRight = velocities.X;
        Double swipeUpDown = velocities.Y;
        // A negative value means swiping to the left
        if (swipeLeftRight < 0)
        {
            navigateToNextPage();
        }
        // a positive value is a swipe to the right.
        else if (swipeLeftRight > 0)
        {
            navigateToPreviousPage();
        }
    }

此Grid的子元素是ScrollViewer.

有人可以建议代码出什么问题吗?

解决方法:

作为对link的参考,这里是解决方案

我在ScrollViewer的PointerEntered事件中禁用ScrollViewer VerticalScrollMode,以便将调用Grid Manipulation事件.操作完成后即在ManipulationCompleted事件中启用VerticalScrollMode

ScrollViewer scroolviewr;
        private void ScrollViewer_PointerEntered(object sender, PointerRoutedEventArgs e)
        {
            scroolviewr = (sender as ScrollViewer); 
            (sender as ScrollViewer).VerticalScrollMode = ScrollMode.Disabled;
        }
private void PageLayoutGrid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        e.Handled = true;
    }

    private void LayoutManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
    {
        scroolviewr.VerticalScrollMode = ScrollMode.Enabled;
        var velocities = e.Velocities.Linear;
        Double swipeLeftRight = velocities.X;
        Double swipeUpDown = velocities.Y;
        // A negative value means swiping to the left
        if (swipeLeftRight < 0)
        {
            navigateToNextPage();
        }
        // a positive value is a swipe to the right.
        else if (swipeLeftRight > 0)
        {
            navigateToPreviousPage();
        }
    }




 <Grid ManipulationMode="TranslateX" ManipulationDelta="Grid_ManipulationDelta" ManipulationCompleted="Grid_ManipulationCompleted">
    <ScrollViewer HorizontalScrollBarVisibility="Disabled" HorizontalScrollMode="Disabled" PointerEntered="ScrollViewer_PointerEntered">
    .....
    </ScrollViewer>

</Grid>

标签:windows-10-universal,win-universal-app,c
来源: https://codeday.me/bug/20191027/1941740.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有