Exemple #1
0
        /// <summary>
        /// Called by the <see cref="EventQueue"/> when the underlying collection has changed.
        /// </summary>
        protected virtual void HandlePropertyChanged(object sender, PropertyEventArgs args_)
        {
            PropertyCollectionEventArgs args = args_ as PropertyCollectionEventArgs;

            if ((args == null) || (args.Removed == null && args.Added == null))
            {
                // Behave as if each member were added in sequence.
                using (Synchronizer.Lock(this.m_Owner.SyncRoot)) {
                    int index = 0;
                    foreach (object member in this.Collection)
                    {
                        this.m_HandlePropertyChangedDispatch.Dispatcher(sender,
                                                                        new PropertyCollectionEventArgs(this.Property, index++, null, member));
                    }
                }
            }

            else
            {
                if (args.Removed != null)
                {
                    this.TearDownMember(args.Index, args.Removed, this.m_TagTable[args.Removed]);
                    this.m_TagTable.Remove(args.Removed);
                }

                if (args.Added != null)
                {
                    this.m_TagTable[args.Added]
                        = this.SetUpMember(args.Index, args.Added);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Called by the <see cref="EventQueue"/> when the underlying collection is about to change.
        /// </summary>
        protected virtual void HandlePropertyChanging(object sender, PropertyEventArgs args_)
        {
            PropertyCollectionEventArgs args = args_ as PropertyCollectionEventArgs;

            if ((args == null) || (args.Removed == null && args.Added == null))
            {
                // Behave as if each member were removed from the collection.
                using (Synchronizer.Lock(this.m_Owner.SyncRoot)) {
                    foreach (object member in this.Collection)
                    {
                        this.m_HandlePropertyChangedDispatch.Dispatcher(sender,
                                                                        new PropertyCollectionEventArgs(this.Property, -1, member, null));
                    }
                }
            }
        }