Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ElementCollection"/> class.
        /// </summary>
        /// <param name="owner">The parent of this collection.</param>
        public ElementCollection(IElementParent owner)
        {
            this.owner = owner;

            if (owner is ElementBase e)
            {
                this.composite = new ObservableComposite <IList <Vertex> >(MakeVerticesObservable(e));
            }
            else
            {
                this.composite = new ObservableComposite <IList <Vertex> >(Observable.Never <IList <Vertex> >());
            }
        }
Пример #2
0
        /// <inheritdoc />
        public void Add(ElementBase element)
        {
            if (element.Parent != null)
            {
                throw new ArgumentException("Can't add element that already has a parent");
            }

            element.Parent = this.owner;
            if (element is IElementParent parent)
            {
                composite.Add(parent.SubElements.composite);
                removalCallbacks.Add(element, parent.SubElements.composite.Remove);
            }
            else
            {
                var leaf = new ObservableComposite <IList <Vertex> >(MakeVerticesObservable(element));
                composite.Add(leaf);
                removalCallbacks.Add(element, leaf.Remove);
            }
        }