我可以';从DataGrid中删除无效行后,无法更新行
本文关键字:更新 无效 删除 DataGrid 我可以 | 更新日期: 2023-09-27 18:25:15
当我从ObservableCollection
中删除一个包含无效数据的项时,datagrid
不会清除它有错误的事实,所以一旦我删除它,它就好像DataGrid
仍然有错误一样,不允许我编辑/添加和编辑数据。
我正在使用MVVM,所以我不能只执行datagrid.refresh
:''
有什么想法吗?
我不知道这是否有效,但您可以尝试告诉数据网格整个集合已经更改:
两种选择:
1) 引发集合属性的属性更改通知。
public class MyViewModel : ViewModelBase
{
private void RefreshItems()
{
RaisePropertyChanged("Items");
}
private ObservableCollection<DataItem> Items { ... }
}
2) 从ObservableCollection派生,以便引发NotifyCollectionChanged事件
public class MyCollection : ObservableCollection<DataItem>
{
public void Refresh()
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
}
我是用Phil的答案得出的:
protected override void RemoveItem(int index)
{
this[index] = new EngineStatusUserFilter();
base.RemoveItem(index);
Refresh();
}
public void Refresh() {
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); }
在删除旧对象之前,我将其设置为新对象,这样它将有效。
从ObservableCollection中删除项(存在验证错误)后,重新创建ObservableCollections并引发OnPropertyChanged。
通过刷新DataGrid,删除前创建的行仍然可以编辑,因为删除的项/行的验证错误已经消失。
像这样:
public ObservableCollection<Person> Persons { get; private set; }
...
private void DeleteRowCommand_Method()
{
Persons.Remove(SelectedPerson);
Persons = new ObservableCollection<Person>(Persons);
OnPropertyChanged("Persons");
}
...