在ListView中过滤数据[mvvm]

时间:2010-12-16 06:12:07

标签: c# wpf listview binding filter

我创建了一个listview(在xaml中),我在其中使用GridViewColumn和DisplayMemberBinding来显示我的ViewModel的属性。

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

一切正常。我可以在listview中看到DataContent的内容。 现在我想要一种listview过滤器。用户可以在文本框中输入当前在DataContent中的每个项目中搜索的字符串。 DataContent中的项具有名为“IsShown”的布尔属性。当在“UserName”属性中找不到输入的字符串时,此属性设置为false,否则为true。

我现在需要的是: 列表视图中没有匹配的UserName的每一行都必须隐藏。 我想我可以在这里以某种方式使用属性IsShown(在视图模型中),它可用于每一行。 当用户从文本框中删除或更改字符串时,将再次搜索DataContent的内容,并在必要时修改IsShown。 列表视图必须再次更新。仅显示行,其中“IsShown”为真。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用CollectionView类

See Here

以及特定的过滤器示例

Filter Example