【问题标题】:UWP Use Shy Header for ListViewUWP 对 ListView 使用 Shy Header
【发布时间】:2020-01-27 08:34:16
【问题描述】:

我基本上是从here 复制代码,然后将变量更改为我的。我还复制了 ExpressionBuilder 文件夹下的文件。

而在ShyHeader.cs里面,有这样一行代码:

var scrollViewer = gridView.GetFirstDescendantOfType<ScrollViewer>();

所以我为我的ListView 尝试了同样的事情,但它显示未定义:

SongsListView.GetFirstDescendantOfType<ScrollViewer>()

所以我在SongsListView 周围放了一个ScrollViewer 并使用它。但我无法让它为我的项目工作。标题既不粘在上面也不害羞。它只是正常滚动。谁能帮我调试一下?

SongsListView 是here

SongsListView 使用here in HeaderedPlaylistControl

ShyHeader 在底部实现here

HeaderPlaylistControl 用于AlbumPageMyFavoritesPagePlaylistsPage

【问题讨论】:

  • GetFirstDescendantOfType可能是GridView的扩展方法。
  • 使用我自己的ScrollViewer 怎么样?为什么它不起作用?我什至使用ScrollHeader 并将其Mode 设置为“粘性”。但是标题仍然不粘。这发生在我尝试实现 Shy Header 之前。
  • 请查看VisualTreeHelperExtensions.cs 类,它基于VisualTreehHelper。
  • 如您所知,每个 ListView 都包含用于滚动内容的 ScrollViewer
  • 使用这个方法你可以把这个扩展复制到你的项目中,这是一个扩展类,它适用于所有DependencyObject

标签: c# xaml uwp win-universal-app


【解决方案1】:

所以我为我的 ListView 尝试了同样的事情,但它显示未定义

这是 DependencyObject 的扩展方法。您可以找到它here 并将其复制到您的项目中。

所以我在 SongsListView 周围放置了一个 ScrollViewer 并使用它。但我无法让它为我的项目工作。

我检查了您的代码,您需要在
PlaylistInfoGrid 加载时调用SetShyHeadermet 方法。

private void PlaylistInfoGrid_Loaded(object sender, RoutedEventArgs e)
{
    SetShyHeader();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多