将列表绑定到网格时,如何在列表中显示某些项?

时间:2011-09-22 14:23:37

标签: c# wpf mvvm

我有一个绑定到网格的列表。我的列表项具有RunTimeState等属性。用户可以选择网格中的每个项目并将其删除。删除项目时,其RunTimeState设置为Deleted。如何让我的网格不显示这些已删除的项目?

1 个答案:

答案 0 :(得分:1)

每当您的项目被删除时,您应该将INotifyPropertyChanged.PropertyChanged事件的属性名称设置为网格数据源。并且该属性应该过滤项目,或者之前应该从您的集合中删除项目。

代码可能如下所示:

var myDataSource = ...;

public void DeleteItem(Item item)
{
  item.RunTimeState = RunTimeState.Deleted;
  // you can remove the item from the myDataSource here or filter it later
  PropertyChanged(this, new PropertyChangedEventArgs("DataSource"));
}

public IList<Item> DataSource 
{
  get { return myDataSource; }
  // or
  get 
  { 
    return myDataSource.Where(i => i.RunTimeState != RunTimeState.Deleted).ToList(); 
  }
}