2010-12-16 16 views
3

Ich habe eine Listenansicht (in XAML) erstellt, in der ich GridViewColumn mit DisplayMemberBinding verwendet habe, um die Eigenschaften meines ViewModels anzuzeigen.Daten in ListView filtern [mvvm]

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

Alles funktioniert gut. Ich kann den Inhalt von DataContent in meiner Listenansicht sehen. Jetzt möchte ich eine Art Listview-Filter haben. Der Benutzer kann in einem Textfeld eine Zeichenfolge eingeben, die derzeit in jedem Element in DataContent gesucht wird. Die Elemente in DataContent haben eine boolesche Eigenschaft namens "IsShown". Diese Eigenschaft wird auf "false" gesetzt, wenn die eingegebene Zeichenfolge in der Eigenschaft "UserName" nicht gefunden wird.

Was ich jetzt brauche, ist: Jede Zeile in der Listview, die keinen passenden Benutzernamen hat, muss ausgeblendet werden. Ich denke ich kann hier irgendwie die Eigenschaft IsShown (im View Model) verwenden, die für jede Zeile verfügbar ist. Wenn der Benutzer die Zeichenfolge aus dem Textfeld entfernt oder ändert, wird der Inhalt von DataContent erneut durchsucht und IsShown wird bei Bedarf geändert. Die Listview muss erneut aktualisiert werden. Nur die Zeilen werden angezeigt, wobei "IsShown" zutrifft.

Wie kann ich das tun?

Antwort

2

Sie können von Collection Klasse

See Here

als auch spezifische Filter Beispiel

Filter Example

+0

Sie machen danke ich dies überprüfen. Scheint die Lösung für mein Problem zu sein. – Ferhat