向下滚动时,Groove 将标题向上移动到可视区域之外,就像常规的 ListView 标题一样。向上滚动时,它会立即将标题向下移回可视区域,而不管当前的垂直滚动偏移量如何。标题似乎是 ListView 内容的一部分,因为滚动条包含标题。
这如何在 Windows 10 UWP 应用中实现?
最佳答案
您可以利用 ListView 的
内部 ScrollViewer 的
ViewChanged
事件来做到这一点。
首先你必须获得内部的ScrollViewer
。这是最简单的版本,但您可能希望使用周围众多 VisualTreeHelper 扩展之一来更安全、更轻松地完成它:
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var border = VisualTreeHelper.GetChild(MyListView, 0);
var scrollviewer = VisualTreeHelper.GetChild(border, 0) as ScrollViewer;
scrollviewer.ViewChanged += Scrollviewer_ViewChanged;
}
在 EventHandler 中,您可以根据滚动方向更改 header 的可见性。
private void Scrollviewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
var sv = sender as ScrollViewer;
if (sv.VerticalOffset > _lastVerticalOffset)
{
MyHeader.Visibility = Visibility.Collapsed;
}
else
{
MyHeader.Visibility = Visibility.Visible;
}
}
这是基本思想。您可能不想添加一些流畅的动画,而不仅仅是更改可见性。
关于win-universal-app - 带有 Groove 的 ListView,如快速返回标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985339/