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