当ObservableCollection/DataGrid变为空时,向其添加一个元素
本文关键字:添加 元素 一个 DataGrid ObservableCollection | 更新日期: 2023-09-27 18:26:50
我有一个名为MyObservableCollection
的ObservableCollection<MyItem>
。其项目显示在DataGrid
中。我需要的是,当从DataGrid
中删除所有行时,应该添加回一个具有默认值的MyItem
。
如果我一次删除所有行,以下操作将不起作用。当我一个接一个地删除它们时,它就会起作用。
void DataGrid_UnloadingRow(object sender, DataGridRowEventArgs e)
{
myDataGrid.Items.Refresh();
if (0 == MyObservableCollection.Count)
{
MyObservableCollection.Add(new MyItem());
}
}
此外,我不能使用CollectionChanged
事件处理程序,因为不能从该事件处理程序操作集合(这将导致无限循环)。
我如何实现上述功能
订阅CollectionChanged
事件。由于CollectionChanged
事件中无法修改Collection
,因此可以使用Dispatcher
类对其进行修改。请参阅下面的示例代码。
void MyObservableCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == NotifyCollectionChangedAction.Remove || e.Action == NotifyCollectionChangedAction.Reset)
{
if (MyObservableCollection.Count == 0)
{
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
MyObservableCollection.Add(new MyItem());
}), null);
}
}
}