次のように定義された 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 の拡張メソッドです。
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 が更新されていないことです。行は、実際には ObservableCollection に存在しない場合でも、DataGrid に残ります。Datagrid が更新されない理由を教えてください。