Вопрос

Я пытаюсь создать некоторую функциональность, где appbar приложения будет скрываться, когда я прокручиваю вниз по генеракодичению - я прикрепил обработчик события к ScrollViewer, но проблема, с которой я сталкиваюсь состоит в том, что функциональность очень.Что я подразумеваю в том, что бар приложения продолжает показывать и скрывать, когда я двигаюсь вверх и вниз по списку.

Мой обработчик событий - у меня есть поле под названием ItemsControl, который хранит в последнем высечении прокрутки вертикальное смещение.

private void pushScroll_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
        {
            var scrollViewer = (ScrollViewer)sender;

            if (scrollViewer.VerticalOffset < scrollPoint)
            {
                bottomBar.Visibility = Visibility.Visible;
            }
            else
            {
                bottomBar.Visibility = Visibility.Collapsed;
            }


            scrollPoint = scrollViewer.VerticalOffset;
        }
.

Мои элементы управления шаблон

<ItemsControl.Template>
                    <ControlTemplate>
                        <ScrollViewer x:Name="pushScroll" VerticalScrollMode="Enabled" BringIntoViewOnFocusChange="True" ViewChanged="pushScroll_ViewChanged">
                            <ItemsPresenter />
                        </ScrollViewer>
                    </ControlTemplate>
                </ItemsControl.Template>
.

Это было полезно?

Решение

Вы думали о внедрении таймера.Таким образом, вы должны быть сделаны прокруткой на 1/2 секунды до возвращения бара приложения.Тем не менее, он исчезает почти мгновенно при прокрутке.

http://msdn.microsoft.com/en--US / Библиотека / System.timers.timer.aspx

Возможно, вы также захотите посмотреть в анимацию, чтобы она скользила и скользила назад.

Другие советы

Проблема с вашим решением заключается в том, что при прокрутке appbar будет скрыта Alwasy.Вы пробовали isintermediate о событии args?Это будет ложным, когда прокрутка останавливает прокрутку и верно, когда прокрутки достигают в конце.попробуйте ниже код.

private async void scrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
    {
        if (e.IsIntermediate)
        {
            this.BottomAppBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
        }
        else
            this.BottomAppBar.Visibility = Windows.UI.Xaml.Visibility.Visible;

    }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top