2010-12-16 67 views
3

我創建了一個listview(在xaml中),其中我使用了帶有DisplayMemberBinding的GridViewColumn來顯示ViewModel的屬性。在ListView中過濾數據[mvvm]

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

一切工作正常。我可以在列表視圖中看到DataContent的內容。 現在我想要有一種listview過濾器。用戶可以在文本框中輸入當前在DataContent中的每個項目中搜索的字符串。 DataContent中的項目具有名爲「IsShown」的布爾屬性。如果在「UserName」屬性中找不到輸入的字符串,則該屬性設置爲false,否則爲true。

我現在需要的是: listview中的每一行都沒有匹配的用戶名,必須隱藏起來。 我想我可以在這裏以某種方式使用屬性IsShown(在視圖模型),這是可用的每一行。 當用戶從文本框中刪除或更改字符串時,將再次搜索DataContent的內容,並在必要時修改IsShown。 listview必須再次更新。只顯示行,其中「IsShown」爲真。

我該怎麼做?

回答

2

你可以利用的CollectionView類

See Here

以及具體的過濾器例如

Filter Example

+0

謝謝你,我會檢查這個。似乎是我的問題的解決方案。 – Ferhat 2010-12-16 18:53:22