Ocultar a barra de aplicativos na rolagem
-
21-12-2019 - |
Pergunta
Eu estou tentando criar algumas funcionalidades que o App do AppBar vai esconder quando estou descendo uma ItemsControl
- Anexei um manipulador de eventos para o ScrollViewer mas o problema que estou enfrentando é que a funcionalidade é muito sensível.O que eu quero dizer com isso é que a barra de aplicativos continua mostrando e ocultando quando eu estou me movendo para cima e para baixo na lista.
Meu Manipulador de Eventos - tenho um campo chamado scrollPoint
que armazena o último deslocamento Deslocamento Vertical.
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;
}
Meu ItemsControl Modelo
<ItemsControl.Template>
<ControlTemplate>
<ScrollViewer x:Name="pushScroll" VerticalScrollMode="Enabled" BringIntoViewOnFocusChange="True" ViewChanged="pushScroll_ViewChanged">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
Solução
Você já pensou sobre a implementação de um temporizador.Então, você tem de ser feito de rolagem para 1/2 de um segundo antes que a barra de aplicativos vem de trás.No entanto, ele desaparece quase que instantaneamente quando rolagem.
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
Você também pode querer olhar para uma animação para que ele desliza fora e desliza para trás.
Outras dicas
O problema com sua solução é que quando você rola a barra de aplicativos irá sempre ser escondido.já tentou de IsIntermediate do evento args?Será falsa quando de rolagem deixa de deslocamento e verdadeiro quando o scroll chegar no final.tente código abaixo.
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;
}