滚动时隐藏AppBar

时间:2014-06-03 21:10:09

标签: c# xaml scrollviewer windows-phone-8.1

我试图创建一些功能,当我向下滚动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;
        }

我的项目控制模板

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

2 个答案:

答案 0 :(得分:0)

您是否考虑过实施计时器?所以你必须在App栏回来之前滚动1/2秒。但是,它在滚动时几乎立即消失。

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

您可能还想查看动画,以便滑动并向后滑动。

答案 1 :(得分:0)

您的解决方案的问题是,当您向上滚动时,appbar将被隐藏。你试过事件args的IsIntermediate吗?滚动停止滚动时为false,最后滚动到达时为true。尝试以下代码。

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;

    }