C# Windows phone手柄屏幕操作

C# Windows phone手柄屏幕操作,c#,xaml,windows-phone,windows-phone-8.1,wptoolkit,C#,Xaml,Windows Phone,Windows Phone 8.1,Wptoolkit,我正在使用GestureService.GestureListener工具包,实现进展非常顺利 主页包含一个LongListSelector,在用户看不到的顶部,我有我的滑动菜单,我使用GestureService滑动菜单 当我尝试在LongListSelector中滚动时,顶部的菜单会下降,这不好 如果我在列表上滚动,不要滑动菜单,除此之外,滑动菜单 如何处理这样的事件 谢谢 编辑 这是我的C代码 private void CloseSettings() { v

我正在使用GestureService.GestureListener工具包,实现进展非常顺利

主页包含一个LongListSelector,在用户看不到的顶部,我有我的滑动菜单,我使用GestureService滑动菜单

当我尝试在LongListSelector中滚动时,顶部的菜单会下降,这不好

如果我在列表上滚动,不要滑动菜单,除此之外,滑动菜单

如何处理这样的事件

谢谢

编辑

这是我的C代码

    private void CloseSettings()
    {
        var trans = _feContainer.GetVerticalOffset().Transform;
        trans.Animate(trans.Y, 0, TranslateTransform.YProperty, 500, 0, new CubicEase //trans.Y, 0, TranslateTransform.YProperty, 120, 0, new CubicEase
        {
            EasingMode = EasingMode.EaseOut
        });

        _isSettingsOpen = false;
    }

    private void OpenSettings()
    {
        var trans = _feContainer.GetVerticalOffset().Transform;
        trans.Animate(trans.Y, 400, TranslateTransform.YProperty, 200, 0, new CubicEase
        {
            EasingMode = EasingMode.EaseInOut
        });

        _isSettingsOpen = true;
    }

    private void ResetLayoutRoot()
    {
        if (!_isSettingsOpen)
            _feContainer.SetVerticalOffset(0.0);
        else
            _feContainer.SetVerticalOffset(120.0);
    }

    private void GestureListener_DragDelta(object sender, DragDeltaGestureEventArgs e)
    {
        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.VerticalChange > 0 && !_isSettingsOpen)
        {
            double offset = _feContainer.GetVerticalOffset().Value + e.VerticalChange;
            if (offset > _dragDistanceToOpen)
                this.OpenSettings();
            else
                _feContainer.SetVerticalOffset(offset);
        }

        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.VerticalChange < 0 && _isSettingsOpen)
        {
            double offsetContainer = _feContainer.GetVerticalOffset().Value + e.VerticalChange;
            if (offsetContainer < _dragDistanceToClose)
                this.CloseSettings();
            else
                _feContainer.SetVerticalOffset(offsetContainer);
        }
    }
    private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
    {
        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.VerticalChange > 0 && !_isSettingsOpen)
        {
            if (e.VerticalChange < _dragDistanceToOpen)
                this.ResetLayoutRoot();
            else
                this.OpenSettings();
        }

        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.HorizontalChange < 0               && _isSettingsOpen)
        {
            if (e.VerticalChange > _dragDistanceNegative)
                this.ResetLayoutRoot();
            else
                this.CloseSettings();
        }
    }

在类中声明的变量,它的工作非常好,但是正如我之前所说的,当我在我的longListSelector中滚动时,菜单向下滑动,我不想这样

这仅在父级未接收调用时发生。我建议您做的是在菜单中添加ishitestvisible=False,看看它是否有效

可能需要更多的代码来查看热区的位置。答案很简单,只要在满足某些条件时将IshittesVisible设置为false即可。@ChubosaurusSoftware检查我的编辑。
    private void CloseSettings()
    {
        var trans = _feContainer.GetVerticalOffset().Transform;
        trans.Animate(trans.Y, 0, TranslateTransform.YProperty, 500, 0, new CubicEase //trans.Y, 0, TranslateTransform.YProperty, 120, 0, new CubicEase
        {
            EasingMode = EasingMode.EaseOut
        });

        _isSettingsOpen = false;
    }

    private void OpenSettings()
    {
        var trans = _feContainer.GetVerticalOffset().Transform;
        trans.Animate(trans.Y, 400, TranslateTransform.YProperty, 200, 0, new CubicEase
        {
            EasingMode = EasingMode.EaseInOut
        });

        _isSettingsOpen = true;
    }

    private void ResetLayoutRoot()
    {
        if (!_isSettingsOpen)
            _feContainer.SetVerticalOffset(0.0);
        else
            _feContainer.SetVerticalOffset(120.0);
    }

    private void GestureListener_DragDelta(object sender, DragDeltaGestureEventArgs e)
    {
        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.VerticalChange > 0 && !_isSettingsOpen)
        {
            double offset = _feContainer.GetVerticalOffset().Value + e.VerticalChange;
            if (offset > _dragDistanceToOpen)
                this.OpenSettings();
            else
                _feContainer.SetVerticalOffset(offset);
        }

        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.VerticalChange < 0 && _isSettingsOpen)
        {
            double offsetContainer = _feContainer.GetVerticalOffset().Value + e.VerticalChange;
            if (offsetContainer < _dragDistanceToClose)
                this.CloseSettings();
            else
                _feContainer.SetVerticalOffset(offsetContainer);
        }
    }
    private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
    {
        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.VerticalChange > 0 && !_isSettingsOpen)
        {
            if (e.VerticalChange < _dragDistanceToOpen)
                this.ResetLayoutRoot();
            else
                this.OpenSettings();
        }

        if (e.Direction == System.Windows.Controls.Orientation.Vertical && e.HorizontalChange < 0               && _isSettingsOpen)
        {
            if (e.VerticalChange > _dragDistanceNegative)
                this.ResetLayoutRoot();
            else
                this.CloseSettings();
        }
    }