如何在列表视图中仅显示某些项

本文关键字:显示 列表 视图 | 更新日期: 2023-09-27 18:36:53

>我有一个列表视图,其中显示了一些元素

<ListView x:Name="ListaTestiCanzone" ItemClick="TestiCanzone_ItemClick" IsItemClickEnabled="True" ItemsSource="{Binding Source={StaticResource Testo}}" SelectionChanged="TestiCanzone_SelectionChanged" Margin="0,-10,-0.167,9.667">
 <StackPanel Grid.Column="1" Width="300">
    <TextBlock Text="{Binding Path=NomeCanzone}" Style="{StaticResource ListViewItemTextBlockStyle}" />
                                                    <TextBlock Text="{Binding Path=NomeArtista}"/>
                                                    <TextBlock Text="{Binding Path=Anno}"/>
 </StackPanel>

我在 HUBSection 中创建了一些复选框,我只想在其中查看列表视图中的某些项目,而不是所有项目。

<CheckBox x:Name="Uomo" Content="Uomo" IsChecked="{x:Null}"/>

那么我将如何去仅显示列表视图中属性为"Sesso = "Uomo"的项目?

List<Testo> song = new List<Testo>
        {
            new Testo
            {                    
                Anno=2012,
                NomeCanzone="Estate",
                NomeArtista="Jovanotti",
                Sesso="Uomo",
                PercorsoFile= @"/Assets/Testi/Estate.txt" 
            },
            new Testo
            {
                Anno=2012,
                NomeCanzone="Terra degli uomini",
                NomeArtista="Jovanotti",
                Sesso="Uomo",
                PercorsoFile="",

如何在列表视图中仅显示某些项

不要直接绑定到集合,而是遍历 CollectionView 对象。然后将 Filter 属性设置为使用复选框和条件进行评估的谓词,如 MSDN 中所述。

该函数如下所示:

private void ShowUomoFilter(object sender, FilterEventArgs e)
{
    if (checkBox1.Checked)
    {
        Testo item = (Testo)e.Item;
        if (item.Sesso == "Uomo")
           e.Accepted = true;
        else
           e.Accepted = false;
    }
    else
       e.Accepted = true;
}

由于筛选器都与视图相关,因此可以通过代码隐藏进行设置。