C# UWP上的水平滑动手势

C# UWP上的水平滑动手势,c#,xaml,uwp,uwp-xaml,swipe-gesture,C#,Xaml,Uwp,Uwp Xaml,Swipe Gesture,是否有任何方法可以使用wptoolkit获得与windows phone 8相同的刷卡手势。 因为wptoolkit nuget包不适用于uwp,所以我无法在uwp上获得类似的滑动手势 在windows Phone 8中,借助WPtoolkit nugetget软件包 我把这个 <toolkit:GestureService.GestureListener> <toolkit:GestureListener Flick="OnSwipe"/> </

是否有任何方法可以使用wptoolkit获得与windows phone 8相同的刷卡手势。 因为wptoolkit nuget包不适用于uwp,所以我无法在uwp上获得类似的滑动手势 在windows Phone 8中,借助WPtoolkit nugetget软件包 我把这个

<toolkit:GestureService.GestureListener>
         <toolkit:GestureListener Flick="OnSwipe"/>
</toolkit:GestureService.GestureListener>
我在uwp上尝试了scrollViewer的操作方法,但它不断增加值,直到scroll viewer停止

这是密码

    private static int i;
    private Point initialpoint;
    private void scrollview_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
    {
        initialpoint = e.Position;
    }

    private void scrollview_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
    {
        if (e.IsInertial)
        {
            Point currentpoint = e.Position;
            if (currentpoint.X - initialpoint.X >= 2)
            {
                i++;
                txtBox1.Text = i.ToString();
            }

            if (currentpoint.Y - initialpoint.Y >= 2)
            {
                i--;
                txtBox1.Text = i.ToString();
            }
        }
    }

实现相同功能的任何其他方法。

实际上,在这种情况下,您不需要处理
操作启动
,也不需要
initialPoint
属性。假设您已经将
ScrollViewer的
操作模式定义为以下内容

ManipulationMode="TranslateX,TranslateInertia,System"
然后您只需使用
e.Cumulative.Translation.X
来告诉您总共刷卡了多长时间

private void scrollview_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
    if (e.IsInertial)
    {
        var swipedDistance = e.Cumulative.Translation.X;

        if (Math.Abs(swipedDistance) <= 2) return;

        if (swipedDistance > 0)
        {
            i++;
        }
        else
        {
            i--;
        }

        txtBox1.Text = i.ToString();
    }
}
确保移动所有处理程序,并将
操作模式设置到
文本框上

<TextBox x:Name="txtBox1"
         ManipulationMode="TranslateX,TranslateInertia,System" 
         ManipulationDelta="txtBox1_ManipulationDelta" 
         ManipulationCompleted="txtBox1_ManipulationCompleted" />


但在scroll viewer停止之前,该值仍会持续增加,这意味着该值会增加两倍。任何其他更好的建议来代替文本块上的ScrollViewer它工作得有点晚(刷卡后需要等待1或1.5秒)它不工作InstantlyAy:),哦,我只是尝试了scroll viewer和文本块,两者都工作得很相似它不工作两次,它只工作了0.5或1秒。延迟,正因为如此,我无意中刷了很多次,但为什么它能在延迟上工作呢?尼斯:)现在它可以毫不延迟地立即完美工作。谢谢你把宝贵的时间花在我的问题上,很高兴这有帮助!
private bool _isSwiped;
private void txtBox1_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    if (e.IsInertial && !_isSwiped)
    {
        var swipedDistance = e.Cumulative.Translation.X;

        if (Math.Abs(swipedDistance) <= 2) return;

        if (swipedDistance > 0)
        {
            i++;
        }
        else
        {
            i--;
        }

        txtBox1.Text = i.ToString();

        _isSwiped = true;
    }
}

private void txtBox1_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
    _isSwiped = false;
}
<TextBox x:Name="txtBox1"
         ManipulationMode="TranslateX,TranslateInertia,System" 
         ManipulationDelta="txtBox1_ManipulationDelta" 
         ManipulationCompleted="txtBox1_ManipulationCompleted" />