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>
Foi útil?

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;

    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top