Windows Phone обрабатывать манипуляции с экраном

Я использую инструментарий GestureService.GestureListener, реализация идет очень хорошо.

Главная страница содержит LongListSelector, а сверху (невидимо для пользователя) у меня есть скользящее меню, которое я перемещаю с помощью GestureService.

когда я пытаюсь прокрутить LongListSelector, меню сверху падает, что не очень хорошо.

если я прокручиваю список, не сдвигай меню, кроме этого, сдвигай меню!

как справиться с таким событием.

Спасибо

редактировать

 <Grid x:Name="LayoutRoot">
    <toolkit:GestureService.GestureListener>
        <toolkit:GestureListener DragDelta="GestureListener_DragDelta" 
                                 DragCompleted="GestureListener_DragCompleted" />
    </toolkit:GestureService.GestureListener>

    <phone:Panorama Foreground="Black">

        <phone:PanoramaItem>
                <Phone:LongListSelector x:Name="MyList"
                            ItemTemplate="{StaticResource MyListTemplate}"/>
        </phone:PanoramaItem>

        <phone:PanoramaItem>

        </phone:PanoramaItem>
   </phone:Panorama >      
 </Grid>

И это мой код 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, меню сдвигается вниз, я этого не хочу!

1 ответ

Это происходит только тогда, когда родитель не получает вызов вызова. Я предлагаю вам добавить IsHitTestVisible =False в ваше меню и посмотреть, работает ли он или нет

Другие вопросы по тегам