在 ListView [mvvm] 中过滤数据

Posted

技术标签:

【中文标题】在 ListView [mvvm] 中过滤数据【英文标题】:Filter data in ListView [mvvm] 【发布时间】:2011-05-26 08:53:54 【问题描述】:

我创建了一个列表视图(在 xaml 中),我在其中使用了带有 DisplayMemberBinding 的 GridViewColumn 来显示我的 ViewModel 的属性。

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

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

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

我该怎么做?

【问题讨论】:

【参考方案1】:

你可以使用 CollectionView 类

See Here

以及特定的过滤器示例

Filter Example

【讨论】:

谢谢,我会检查的。似乎是我的问题的解决方案。

以上是关于在 ListView [mvvm] 中过滤数据的主要内容,如果未能解决你的问题,请参考以下文章

在 CollectionViewSource 上触发过滤器

使用 MVVM 从 WPF ListView 项触发双击事件

Xamarin MVVM 从另一个页面删除 Listview 项目

WPF MVVM ListView动态绑定数据

如何在listview - WPF MVVM上拖放后更新codeBehind中的ObservableCollection

Xamarin ListView itemSelected MVVM