如何在 ListView 中只显示某些项目?
How to display only certain items in the ListView?
我有一个 ListView,其中显示了一些元素
<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 中创建了一些复选框,我希望在其中只看到 ListView 中的某些项目,而不是所有项目。
<CheckBox x:Name="Uomo" Content="Uomo" IsChecked="{x:Null}"/>
然后我将如何只显示属性为 "Sesso = "Uomo" 的 ListView 中的项目?
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;
}
由于过滤器都是与视图相关的,因此可以通过代码隐藏进行设置。
我有一个 ListView,其中显示了一些元素
<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 中创建了一些复选框,我希望在其中只看到 ListView 中的某些项目,而不是所有项目。
<CheckBox x:Name="Uomo" Content="Uomo" IsChecked="{x:Null}"/>
然后我将如何只显示属性为 "Sesso = "Uomo" 的 ListView 中的项目?
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;
}
由于过滤器都是与视图相关的,因此可以通过代码隐藏进行设置。