当我从ObservableCollection
中删除包含无效数据的项目时,datagrid
将无法清除它有错误的事实,因此一旦删除它就会像{{1}一样仍有错误,不允许我编辑/添加和编辑数据。
我正在使用 MVVM ,所以我不能只做DataGrid
:\
有什么想法吗?
答案 0 :(得分:2)
我不知道这是否有效,但您可以尝试告诉数据网格整个集合已更改:
两个选项:
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));
}
}
答案 1 :(得分:1)
我用菲尔的回答想出了这个:
protected override void RemoveItem(int index)
{
this[index] = new EngineStatusUserFilter();
base.RemoveItem(index);
Refresh();
}
public void Refresh() {
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); }
我将旧对象设置为新对象,然后将其删除,以使其有效。
答案 2 :(得分:0)
从ObservableCollection中删除项目(具有验证错误)后,重新创建ObservableCollection并引发OnPropertyChanged。
此刷新DataGrid,您在删除之前创建的行仍然可以编辑,因为删除的项目/行的验证错误已消失。
像这样:
public ObservableCollection<Person> Persons { get; private set; }
...
private void DeleteRowCommand_Method()
{
Persons.Remove(SelectedPerson);
Persons = new ObservableCollection<Person>(Persons);
OnPropertyChanged("Persons");
}
...