【问题标题】:WinRT, C#, canvas and children inertial scrollingWinRT、C#、画布和儿童惯性滚动
【发布时间】:2019-11-20 20:41:49
【问题描述】:

情况:WinRT 应用程序,主页面上的画布。画布有许多孩子。当用户点击画布并移动指针时,我正在尝试滚动它们。一切正常,但我不知道如何模拟惯性滚动。

代码:

private GestureRecognizer gr = new GestureRecognizer();
public MainPage()
        {
            this.InitializeComponent();


            gr.GestureSettings = GestureSettings.ManipulationTranslateInertia;
            gr.AutoProcessInertia = true;
        }

我订阅了一些画布事件:

//Pressed
private void Canvas_PointerPressed(object sender, PointerRoutedEventArgs e)
        {
            if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch)
            {


                var _ps = e.GetIntermediatePoints(cnvMain);
                if (_ps != null && _ps.Count > 0)
                {
                    gr.ProcessDownEvent(_ps[0]);
                    e.Handled = true;

                    Debug.WriteLine("Pressed");
                }
                initialPoint = e.GetCurrentPoint(cnvMain).Position.X;
            }
        }



//Released
private void Canvas_PointerReleased(object sender, PointerRoutedEventArgs e)
        {
            if (e.Pointer.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch)
            {

                var _ps = e.GetIntermediatePoints(cnvMain);
                if (_ps != null && _ps.Count > 0)
                {
                    gr.ProcessUpEvent(_ps[0]);
                    e.Handled = true;

                    Debug.WriteLine("Released");

            }
        }

// Moved
private void Canvas_PointerMoved(object sender, PointerRoutedEventArgs e)
        {

            if (gr.IsActive || gr.IsInertial)
            {

                                   gr.ProcessMoveEvents(e.GetIntermediatePoints(null));


// Here is my code for translation of children
                e.Handled = true;
            }
        }

所以,我可以翻译canvas子,但是没有惯性。如何启用它?

很遗憾,由于特定数据,我无法在此应用中使用 GridView 或 ListView 之类的东西。

【问题讨论】:

    标签: c# canvas windows-runtime


    【解决方案1】:

    您应该使用GestureRecognizerManipulationInertiaStarting。这应该为您提供足够的信息来实现惯性滚动。

    【讨论】:

    • 另一种选择是将画布放在滚动视图中,让滚动视图处理手势。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多