1

我有一个ObservableCollection<MyItem>MyObservableCollection. 它的项目显示在DataGrid. 我需要的是,当从 中删除所有行时,应添加回具有默认值的DataGridMyItem

如果我一次删除所有行,以下操作将不起作用。当我一个一个删除它们时它会起作用。

void DataGrid_UnloadingRow(object sender, DataGridRowEventArgs e)
{
    myDataGrid.Items.Refresh();
    if (0 == MyObservableCollection.Count)
    {
        MyObservableCollection.Add(new MyItem());
    }
}

我也不能使用CollectionChanged事件处理程序,因为不能从那个处理集合(会导致无限循环)。

我怎样才能实现上述功能?

4

1 回答 1

2

订阅CollectionChanged活动。由于Collection无法在CollectionChanged事件中修改,您可以使用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);
            }
        }
    }
于 2013-08-08T17:10:31.007 回答