AvalonStudio.Controls.TabControlViewModel.TabControlViewModel C# (CSharp) Method

TabControlViewModel() public method

public TabControlViewModel ( ) : System.Collections.ObjectModel
return System.Collections.ObjectModel
        public TabControlViewModel()
        {
            tools = new ObservableCollection<object>();
            disposableVisibleObservers = new Dictionary<ToolViewModel, IDisposable>();

            tools.CollectionChanged += (sender, e) =>
            {
                switch (e.Action)
                {
                    case NotifyCollectionChangedAction.Add:
                        foreach (var item in e.NewItems)
                        {
                            if (item is ToolViewModel)
                            {
                                var tvm = item as ToolViewModel;

                                var disposable = tvm.IsVisibleObservable.Subscribe(_ => InvalidateIsVisible());

                                disposableVisibleObservers.Add(tvm, disposable);
                            }
                        }

                        InvalidateIsVisible();
                        break;

                    case NotifyCollectionChangedAction.Remove:
                        foreach (var item in e.OldItems)
                        {
                            if (item is ToolViewModel)
                            {
                                IDisposable disposable;

                                var tvm = item as ToolViewModel;

                                if (disposableVisibleObservers.TryGetValue(tvm, out disposable))
                                {
                                    disposable.Dispose();
                                }
                            }
                        }
                        break;
                }
            };
        }