TreeGridView doesn't update

I have a TreeGridView defined like this:

        private void GenerateGridViewLayout()
        {
            gridviewlayout = new TreeGridView
            {
                DataStore = MyComponent
                
            };
            gridviewlayout.Columns.Add(new GridColumn { DataCell = new TextBoxCell("TreeItemName"), HeaderText = "Name", AutoSize = true, Width = 150, Resizable = true, Editable = false });
            gridviewlayout.Columns.Add(new GridColumn { DataCell = new TextBoxCell("TreeItemType"), HeaderText = "Type", AutoSize = true, Width = 110, Resizable = true, Editable = false });
            gridviewlayout.Columns.Add(new GridColumn { DataCell = new TextBoxCell("TreeItemDescription"), HeaderText = "Description", AutoSize = true, Resizable = true, Editable = false });
        }

Whereas MyComponent is a type of Component that implements these interfaces:

class Component : ITreeGridItem, ITreeGridStore<Component>, INotifyPropertyChanged, INotifyCollectionChanged
{

        /// ===================
        /// some other implementations
        /// ===================

        [Browsable(false)]
        public event PropertyChangedEventHandler PropertyChanged;
        
        [Browsable(false)]
        internal void NotifyPropertyChanged([CallerMemberName] string propertyName = null)  
        {  
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        [Browsable(false)]
        public event NotifyCollectionChangedEventHandler CollectionChanged;

        internal void NotifyCollectionChanged()
        {
            CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
        }

        [Browsable(false)]
        bool ITreeItem<ITreeGridItem>.Expanded { get; set; }

        [Browsable(false)]
        bool ITreeItem<ITreeGridItem>.Expandable
        {
            get { return Children.Any(); }
        }

        [Browsable(false)]
        public IEnumerable<Component> Children
        {
            get
            {
                return Component.AllComponents.Where(c => c.Parent == this);
            }
        }

        [Browsable(false)]
        ITreeGridItem ITreeItem<ITreeGridItem>.Parent  {  get;   set;  }


   
        [Browsable(false)]
        int IDataStore<Component>.Count
        {
            get
            {
                return Children.Count();
            }
        }


        Entity IDataStore<Component>.this[int index] => Children.ElementAt(index);

}

When I add or delete an Obect in Rhino, I fire MyComponent.NotifyCollectionChanged() event. But oddly the eventhandler ColletionChanged is null, meaning the TreeGridView is not subscribing to this event, thus it doesn’t update the view.

What’s wrong with my implementation?

Thanks in advance,
Chen

Environment: Windows 10 Pro 1903, Rhino Version 6 SR20(6.20.19322.20361, 11/18/2019), Eto version 2.5.0.0