2010-12-16 6 views
3

J'ai créé un listview (en xaml), où j'ai utilisé GridViewColumn avec DisplayMemberBinding pour afficher les propriétés de mon ViewModel.Filtrer les données dans ListView [mvvm]

 <ListView x:Name="MyListView" ItemsSource="{Binding DataContent}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn DisplayMemberBinding="{Binding UserName}"/> 
       <GridViewColumn DisplayMemberBinding="{Binding LastName}"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 

Tout fonctionne très bien. Je peux voir le contenu de DataContent dans ma liste. Maintenant, je veux avoir une sorte de filtre listview. L'utilisateur peut entrer dans une zone de texte une chaîne qui est actuellement recherchée dans chaque élément de DataContent. Les éléments de DataContent ont une propriété booléenne nommée "IsShown". Cette propriété est définie sur false lorsque la chaîne entrée est introuvable dans la propriété "UserName", sinon true. Ce dont j'ai besoin maintenant est: Chaque ligne dans la listview, qui n'a pas un UserName correspondant doit être cachée. Je pense que je peux utiliser ici d'une manière ou d'une autre la propriété IsShown (in view model), qui est disponible pour chaque ligne. Lorsque l'utilisateur supprime ou modifie la chaîne de la zone de texte, le contenu de DataContent est à nouveau recherché et IsShown est modifié si nécessaire. La liste doit être mise à jour à nouveau. Seules les lignes sont affichées, où "IsShown" est vrai.

Comment puis-je faire cela?

Répondre

2

Vous pouvez utiliser la classe CollectionView

See Here

ainsi par exemple de filtre spécifique

Filter Example

+0

Merci, je vais vérifier. Semble être la solution à mon problème. – Ferhat

Questions connexes