2009-12-09 3 views
0

Je me demande si je peux faire quelque chose comme ça avec CollectionViewSource aussi. J'ai un DataTemplate qui ressemble à ceci:Solution pour filtrer toutes les instances d'un objet?

<DataTemplate DataType="{x:Type local:MyObject}"> 
    <StackPanel Orientation="Horizontal"> 
     <Grid> 
      <Image Source="Images\gear16.png" /> 
      <Image Source="Images\disk.gif" HorizontalAlignment="Right" VerticalAlignment="Bottom" 
        Visibility="{Binding MyProp, Converter={StaticResource BooleanToVisibilityConverter}}" /> 
     </Grid> 
     <TextBlock Margin="5,0,0,0" Text="{Binding Name}" VerticalAlignment="Center" /> 
    </StackPanel> 
</DataTemplate> 

Alors bien sûr, tout lié à ce type d'objet prend que DataTemplate, ou en d'autres termes, chaque objet de type MyObject obtient que source de données. Puis-je faire quelque chose de similaire pour CollectionViewSource? Faire passer tous les objets de type MyObject à travers les méthodes de filtrage? Le problème est que j'ai plusieurs instances de cette collection de MyObject, et il sera très difficile de filtrer un par un (je pense), et encore gérer les mises à jour de données et tout, donc je me demande s'il y a est une solution comme celle-ci.

Merci!

Répondre

1

Vous pouvez utiliser la propriété CollectionView.Filter pour effectuer un filtrage. Il n'y a aucun moyen de filtrer un "groupe", seulement "un par un" comme vous le dites. Vous pouvez lire here sur le filtrage.
Votre gestionnaire de filtrage ressemblera à ceci:

private void ShowOnlyBargainsFilter(object sender, FilterEventArgs e) 
{ 
    if (e.Item is MyObject) 
    { 
     e.Accepted = true; 
    } 
    else 
    { 
     e.Accepted = false; 
    } 
} 

Hope it helps.

Questions connexes