2015-01-08 5 views
1

У меня есть 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> 

Я создал несколько Checkbox в HUBSection, в котором я хотел бы видеть только определенные элементы в ListView, и не все из них.

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

Как я пошел бы то, чтобы отобразить только те элементы в ListView со свойством «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="", 

ответ

2

Вместо привязки к коллекции непосредственно, пройти через 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; 
} 

Поскольку фильтр связан со всеми объектами, настройка этого кода осуществляется с помощью кода.

Смежные вопросы