隐藏滚动栏

本文关键字:滚动 隐藏 | 更新日期: 2023-09-27 18:06:25

我正在尝试创建一些功能,当我向下滚动ItemsControl时,应用程序的AppBar将隐藏-我已经将事件处理程序附加到ScrollViewer上,但我面临的问题是该功能非常敏感。我的意思是,当我上下移动列表时,应用程序栏会一直显示和隐藏。

我的事件处理程序-我有一个名为scrollPoint的字段,存储最后一个滚动垂直偏移。

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;
        }

My ItemsControl Template

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

隐藏滚动栏

您是否考虑过实现计时器?所以你需要在App栏回来之前滚动半秒。然而,当滚动时,它几乎立即消失。

http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx

您可能还想查看动画,以便它滑动并返回

这个解决方案的问题是,当你向上滚动时,appbar总是隐藏的。您是否尝试了事件参数的IsIntermediate ?当滚动停止滚动时为假,当滚动到达结束时为真。试试下面的代码。

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;
    }