首页 > 解决方案 > 滚动时保持 ListView.Header 锚定/粘性/冻结到顶部

问题描述

垂直向下滚动项目时,如何将内置Header的冻结保持在顶部?ListViewListView

在标记为重复之前:我尝试在针对 Android 的 Xamarin.Forms的 UWP 中的 Keep ListView.HeaderTemplate visible/static/sticky 中应用答案,但没有成功。

短代码示例:

<ListView ItemsSource="{Binding MyList}"             
          HasUnevenRows="True"
          SeparatorVisibility="Default"
          CachingStrategy="RecycleElement">

    <ListView.Header>
        <Label HorizontalTextAlignment="Center"
               FontAttributes="Bold"
               Text="Header Title"/>
    </ListView.Header>
                
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding Name}"/>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

标签: xamllistviewxamarinxamarin.formscontrols

解决方案


如果列表不长,这是一种替代方法

<StackLayout>
        <Label HorizontalTextAlignment="Center"
               FontAttributes="Bold"
               Text="Header Title"/>
        <StackLayout BindableLayout.ItemsSource="{Binding MyList}">
            <BindableLayout.ItemTemplate>
                <DataTemplate>
                    <StackLayout>
                        <Label Text="{Binding Name}"/>
                        <!-- boxview as separator -->
                        <BoxView HeightRequest="1" Color="Aqua" HorizontalOptions="FillAndExpand"/>
                    </StackLayout>
                </DataTemplate>
            </BindableLayout.ItemTemplate>
        </StackLayout>
    </StackLayout>

推荐阅读