Domanda

Sto cercando di creare una certa funzionalità in cui l'Appbar dell'app si nasconde quando sto scorrendo giù un ItemsControl - Ho allegato un gestore di eventi su Scrollviewer ma il problema che sto affrontando è che la funzionalità è molto sensibile .Ciò che intendo in questo è l'app Bar continua a mostrare e nascondendo quando mi sto muovendo su e giù per la lista.

My Event Handler - Ho un campo chiamato scrollPoint che memorizza che l'ultima offset verticale di scorrimento.

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

Il mio modello di mieticontrol

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

È stato utile?

Soluzione

Hai pensato di implementare un timer.Quindi devi fare scorrere lo scorrimento per 1/2 al secondo prima che la barra dell'app ritorni.Tuttavia, scompare quasi istantaneamente durante lo scorrimento.

http://msdn.microsoft.com/en-US / Biblioteca / System.timers.timer.aspx

Potresti anche voler esaminare un'animazione in modo da scivoli via e scivola indietro.

Altri suggerimenti

Il problema con la tua soluzione è che quando scorri l'APPBAR sarà nascosto alwasy.Hai provato istermediato dell'evento ARGS?Sarà falso quando la scorrimento smette di scorrimento e true quando scorri a portata di mano alla fine.Prova sotto il codice.

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;

    }
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top