win-universal-app - 带有 Groove 的 ListView,如快速返回标题

标签 win-universal-app uwp uwp-xaml

向下滚动时,Groove 将标题向上移动到可视区域之外,就像常规的 ListView 标题一样。向上滚动时,它会立即将标题向下移回可视区域,而不管当前的垂直滚动偏移量如何。标题似乎是 ListView 内容的一部分,因为滚动条包含标题。

这如何在 Windows 10 UWP 应用中实现?

Quick return header demo

最佳答案

您可以利用 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/

相关文章:

uwp - 使用 MSBuild 构建 Windows 应用商店应用程序时如何跳过打包步骤?

c# - 在 UWP 中获取已知蓝牙设备的 COM 端口名称

css - 如何增加文本框控件 XAML 的大小

converters - 如何在 Windows 10 通用应用程序中将 BitmapImage 转换为 WriteableBitmap?

c# - Windows 8.1 中 Pivot Control 的替代方案是什么?

c++ - C++/CX 和 C++/WinRT 可以在同一个项目中使用吗?

c# - 在 WP8.1 通用应用程序中使用 PhoneAccentBrush

c# - 如何在没有用户提示的情况下添加到日历 UWP C#

c# - 'TestContext' 不包含 'DataRow' 的定义

c# - 在 Windows 通用应用程序中调整复选框大小