@jessen.ch wrote:
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 ofComponent
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 eventhandlerColletionChanged
is null, meaning theTreeGridView
is not subscribing to this event, thus it doesn’t update the view.What’s wrong with my implementation?
Thanks in advance,
ChenEnvironment: Windows 10 Pro 1903, Rhino Version 6 SR20(6.20.19322.20361, 11/18/2019), Eto version 2.5.0.0
Posts: 1
Participants: 1