Скрыть Appbar на прокрутке
-
21-12-2019 - |
Вопрос
Я пытаюсь создать некоторую функциональность, где appbar приложения будет скрываться, когда я прокручиваю вниз по генеракодичению - я прикрепил обработчик события к ScrollViewer, но проблема, с которой я сталкиваюсь состоит в том, что функциональность очень.Что я подразумеваю в том, что бар приложения продолжает показывать и скрывать, когда я двигаюсь вверх и вниз по списку.
Мой обработчик событий - у меня есть поле под названием ItemsControl
, который хранит в последнем высечении прокрутки вертикальное смещение.
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>
. Решение
Вы думали о внедрении таймера.Таким образом, вы должны быть сделаны прокруткой на 1/2 секунды до возвращения бара приложения.Тем не менее, он исчезает почти мгновенно при прокрутке.
http://msdn.microsoft.com/en--US / Библиотека / System.timers.timer.aspx
Возможно, вы также захотите посмотреть в анимацию, чтобы она скользила и скользила назад.
Другие советы
Проблема с вашим решением заключается в том, что при прокрутке appbar будет скрыта Alwasy.Вы пробовали isintermediate о событии args?Это будет ложным, когда прокрутка останавливает прокрутку и верно, когда прокрутки достигают в конце.попробуйте ниже код.
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;
}
.