0

我正在使用我创建的 WPF 控件,并且我试图仅通过属性值显示列表中的某些行。下面是一个示例,我有一个包含 Active 属性的 User 类。我如何告诉 .xaml 列表应该只显示活跃的人?

现在我基本上使用 linq 生成一个新列表并根据我想要的将它交给 listview。但是,我宁愿只将 ListView 交给我的整个列表,让它为我完成工作。

这是我的 ListView 代码。

<ListView ItemsSource="{Binding}" DataContext="{Binding }" >
     <ListView.View>
          <GridView>
               <GridViewColumn>
                    <GridViewColumn.CellTemplate>
                         <DataTemplate>
                              <StackPanel>
                                   <TextBlock Text="{Binding Index}"/>
                                   <TextBlock Text=". " />
                                   <TextBlock Text="{Binding FirstName}" />
                                   <TextBlock Text="{Binding LastName}" />
                              </StackPanel>
                         </DataTemplate>
                    </GridViewColumn.CellTemplate>
               </GridViewColumn>
          </GridView>
     </ListView.View>
</ListView>
4

1 回答 1

1

您需要一些代码来添加过滤器:

请参阅:WPF 过滤

ICollectionView view = CollectionViewSource.GetDefaultView(lstMovies.ItemsSource);  
view.Filter = null;  
view.Filter = new Predicate<object>(FilterMovieItem);  


private bool FilterMovieItem(object obj)  
{  
    MovieItem item = obj as MovieItem;  
    if (item == null) return false;  

    string textFilter = txtFilter.Text;  

    if (textFilter.Trim().Length == 0) return true; // the filter is empty - pass all items  

    // apply the filter  
    if (item.MovieName.ToLower().Contains(textFilter.ToLower())) return true;  
    return false;  
}  
于 2012-12-10T14:41:17.290 回答