ListView将ListViewHeaderItem放在顶部

马蒂亚斯·赫尔曼(Matthias Herrmann)

我首先说明我要实现的目标:

字母“ A”是我的Listview中的一个ListViewHeaderItem。如果不滚动,则列表顶部看起来像这样。

我的ListView无需滚动

滚动后,ListViewHeaderItem“ A”与其余项一起向下移动-但是如何才能使Header保持在第一项的种类的最前面,直到带有ist子项的字母“ B”出现?我要实现的行为的一个示例是Microsoft Windows 10的官方“邮件”应用程序。它将日期时间放在最前面,直到一天前写的电子邮件到来为止。

我不知道这个问题是否已经存在,但是我不知道如何称呼它,也不知道该怎么做。

周杰伦

根据您的描述,我认为您想要的是一个分组的ListView。这里的重点是使用CollectionViewSource作为ItemsSource并设置GroupStyle来指定如何显示组。以下是一个简单的示例:

在XAML中

<Page.Resources>
    <CollectionViewSource x:Name="groupInfoCVS" IsSourceGrouped="True" />
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView ItemsSource="{Binding Source={StaticResource groupInfoCVS}}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Margin="15" Text="{Binding Path=Text}" />
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.GroupStyle>
            <GroupStyle>
                <GroupStyle.HeaderTemplate>
                    <DataTemplate>
                        <Grid Background="LightGray">
                            <TextBlock Margin="10" Foreground="Black" Text="{Binding Key}" />
                        </Grid>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
        </ListView.GroupStyle>
    </ListView>
</Grid>

并在代码背后

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        List<TestDemo> list = new List<TestDemo>();

        for (int i = 0; i < 6; i++)
        {
            list.Add(new TestDemo { Key = "A", Text = $"Test A {i}" });
            list.Add(new TestDemo { Key = "B", Text = $"Test B {i}" });
        }

        var result = from t in list group t by t.Key;
        groupInfoCVS.Source = result;
    }
}

public class TestDemo
{
    public string Key { get; set; }
    public string Text { get; set; }
}

它看起来像:
在此处输入图片说明

欲了解更多信息,请参阅如何在列表或网格(XAML)组项目简单的ListView样品的ListView和GridView样品在GitHub上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将LinearLayout放在ListView的顶部

来自分类Dev

如何将ViewPager放在listview的顶部?

来自分类Dev

如何将ViewPager放在listview的顶部?

来自分类Dev

将UITabBar放在顶部

来自分类Dev

将UITextView放在键盘顶部?

来自分类Dev

将TextLabel for tableviewcell放在顶部

来自分类Dev

将<li>点放在顶部

来自分类Dev

将span放在div顶部

来自分类Dev

将UITextView放在键盘顶部?

来自分类Dev

将图像放在顶部边缘

来自分类Dev

将图像放在DIV的顶部并居中

来自分类Dev

将插图图例放在顶部中心

来自分类Dev

knitr:将输出放在页面顶部

来自分类Dev

仅将框架始终放在程序顶部

来自分类Dev

将小部件彼此放在顶部

来自分类Dev

将按钮或UIView放在视频顶部

来自分类Dev

将UITabBar放在UITabBarController的屏幕顶部

来自分类Dev

蜡染-将SVG放在图像顶部

来自分类Dev

android ImageView:将图像放在顶部

来自分类Dev

将小部件放在Kivy的顶部

来自分类Dev

将静态UILabel放在滚动UITableView的顶部

来自分类Dev

将按钮或UIView放在视频顶部

来自分类Dev

javascript将中间项目放在顶部

来自分类Dev

蜡染-将SVG放在图像顶部

来自分类Dev

将JButton放在JPanel内JLabel的顶部

来自分类Dev

将div放在彼此的顶部以允许溢出

来自分类Dev

Android将ImageView放在Canvas顶部

来自分类Dev

将匹配的值排序并放在顶部

来自分类Dev

将警报放在主要div顶部