UWP 对 ListView 使用 Shy Header
Posted
技术标签:
【中文标题】UWP 对 ListView 使用 Shy Header【英文标题】:UWP Use Shy Header for ListView 【发布时间】: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 用于AlbumPage、MyFavoritesPage 和PlaylistsPage。
【问题讨论】:
GetFirstDescendantOfType
可能是GridView
的扩展方法。
使用我自己的ScrollViewer
怎么样?为什么它不起作用?我什至使用ScrollHeader
并将其Mode
设置为“粘性”。但是标题仍然不粘。这发生在我尝试实现 Shy Header 之前。
请查看VisualTreeHelperExtensions.cs
类,它基于VisualTreehHelper。
如您所知,每个 ListView 都包含用于滚动内容的 ScrollViewer
。
使用这个方法你可以把这个扩展复制到你的项目中,这是一个扩展类,它适用于所有DependencyObject
。
【参考方案1】:
所以我为我的 ListView 尝试了同样的事情,但它显示未定义
这是 DependencyObject 的扩展方法。您可以找到它here 并将其复制到您的项目中。
所以我在 SongsListView 周围放置了一个 ScrollViewer 并使用它。但我无法让它为我的项目工作。
我检查了您的代码,您需要在PlaylistInfoGrid
加载时调用SetShyHeadermet
方法。
private void PlaylistInfoGrid_Loaded(object sender, RoutedEventArgs e)
SetShyHeader();
【讨论】:
以上是关于UWP 对 ListView 使用 Shy Header的主要内容,如果未能解决你的问题,请参考以下文章
UWP IsNullOrEmptyStateTrigger 不适用于 ListView