The ranged notify list changed event args.
상속: NotifyListChangedEventArgs
예제 #1
0
        /// <summary>
        /// Notifies external classes of property changes.
        /// </summary>
        protected void NotifyChanges()
        {
            Action action = () =>
            {
                // Create event args
                ListChangedEventArgs eventArgs = null;
                if (_suspensionContext != null && _suspensionContext.Mode == SuspensionMode.Adding)
                {
                    if (_suspensionContext.NewItems.Count != 0)
                    {
                        eventArgs = new NotifyRangedListChangedEventArgs(NotifyRangedListChangedAction.Add, _suspensionContext.NewItems, _suspensionContext.NewItemIndices);
                    }
                }
                else if (_suspensionContext != null && _suspensionContext.Mode == SuspensionMode.Removing)
                {
                    if (_suspensionContext.OldItems.Count != 0)
                    {
                        eventArgs = new NotifyRangedListChangedEventArgs(NotifyRangedListChangedAction.Remove, _suspensionContext.OldItems, _suspensionContext.OldItemIndices);
                    }
                }
                else
                {
                    eventArgs = new NotifyListChangedEventArgs(ListChangedType.Reset);
                }

                // Fire events
                if (eventArgs != null)
                {
                    OnListChanged(eventArgs);
                }
            };

            if (AutomaticallyDispatchChangeNotifications)
            {
                _dispatcherService.BeginInvokeIfRequired(action);
            }
            else
            {
                action();
            }
        }