ListView内容位于标题顶部

时间:2019-07-12 07:58:37

标签: listview uwp uwp-xaml

在使用Composition API(example)在ListView上创建粘性标头时,ListView的内容可以越过标头。

通常,Canvas.ZIndex可以解决这类问题,但这不能按预期工作。

<ListView x:Name="listView">
    <ListView.Header>
        <Grid Canvas.ZIndex="1">
            <!--Some content-->
        </Grid>
     </ListView.Header>
     <ListView.ItemTemplate>
         <!-- Some content -->  
     </ListView.ItemTemplate>
</ListView>

真实世界的示例: Visual example

1 个答案:

答案 0 :(得分:0)

ZIndex相对于同一级别上的其他节点,因此您需要从后面的代码直接在ZIndex上更改ListView.Header。将其设置为标题中 中的任何内容都不会起作用。

XAML:

<ListView x:Name="listView">
     <ListView.Header>
        <Grid>
            <!--Some content-->
        </Grid>
    </ListView.Header>
    <ListView.ItemTemplate>
        <!-- Some content -->  
    </ListView.ItemTemplate>
</ListView>

后面的代码:

public ListViewExample()
{
    var headerPresenter = (UIElement)VisualTreeHelper.GetParent((UIElement)TracksList.Header);
    var headerContainer = (UIElement)VisualTreeHelper.GetParent(headerPresenter);
    Canvas.SetZIndex(headerContainer, 1);
}