我有一个 ObservableCollection 定义如下
private ObservableCollection<RelayConfig> _relayConfigs;
public ObservableCollection<RelayConfig> RelayConfigs {
get {return _relayConfigs;}
set { _relayConfigs = value; }
}
这使用 ItemsSource 属性绑定到 wpf Datagrid 并如下所示填充
RelayConfigs = new ObservableCollection<RelayConfig>(unitOfWork.RelayConfigRepository.GetQueryable().Include(rc => rc.StandardContacts));
我正在从 ObservableCollection 中删除与这样的特定条件匹配的项目。
RelayConfigs.RemoveWhere(r => r.IsMarked);
RemoveWhere 是 ObservableCollection 的 Extension 方法,定义如下
public static void RemoveWhere<T>(this ICollection<T> collection, Func<T, bool> predicate) {
var i = collection.Count;
while (i-- > 0) {
var element = collection.ElementAt(i);
if (predicate(element)) {
collection.Remove(element);
}
}
}
问题是当我使用上述设置从 ObservableCollection 中删除一些行时,我没有看到 DataGrid 得到刷新。这些行仍然在 DataGrid 中徘徊,而实际上它在 ObservableCollection 中并不存在。为什么 Datagrid 不刷新的任何想法。