Esempio n. 1
0
 /// <summary>
 /// プロパティ配列変更前の処理
 /// </summary>
 protected virtual void OnDataPropertyCollectionChanging(DataPropertyCollectionChangingEventArgs <T> e)
 {
     if (DataPropertyCollectionChanging != null || _DataPropertyCollectionChanging != null)
     {
         using (BlockReentrancy())
         {
             DataPropertyCollectionChanging?.Invoke(this, e);
             _DataPropertyCollectionChanging?.Invoke(this, e);
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 交換の操作
        /// </summary>
        protected virtual void SwapItem(int index0, int index1)
        {
            CheckReentrancy();
            var operation = GenerateSwapOperation(index0, index1);

            var e = new DataPropertyCollectionChangingEventArgs <T>(this, operation);

            OnDataPropertyCollectionChanging(e);
            if (!e.Cancel)
            {
                if (Execute(e.Operations))
                {
                    OnDataPropertyCollectionChanged(new DataPropertyCollectionChangedEventArgs <T>(this, e.Operations, e.InputOperations));
                }
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 移動の操作
        /// </summary>
        protected virtual void MoveItem(int oldIndex, int newIndex)
        {
            CheckReentrancy();
            var operation = GenerateMoveOperation(oldIndex, newIndex);

            var e = new DataPropertyCollectionChangingEventArgs <T>(this, operation);

            OnDataPropertyCollectionChanging(e);
            if (!e.Cancel)
            {
                if (Execute(e.Operations))
                {
                    OnDataPropertyCollectionChanged(new DataPropertyCollectionChangedEventArgs <T>(this, e.Operations, e.InputOperations));
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 連続削除の操作
        /// </summary>
        protected virtual void RemoveItems(int index, int count)
        {
            if (items.Any())
            {
                CheckReentrancy();

                var operations = new List <DataPropertyCollectionChangeOperation <T> >(Enumerable.Range(index, count).Reverse().Select(_ => GenerateRemoveOperation(_)));

                var e = new DataPropertyCollectionChangingEventArgs <T>(this, operations);
                OnDataPropertyCollectionChanging(e);
                if (!e.Cancel)
                {
                    if (Execute(e.Operations))
                    {
                        OnDataPropertyCollectionChanged(new DataPropertyCollectionChangedEventArgs <T>(this, e.Operations, e.InputOperations));
                    }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 連続設定の操作
        /// </summary>
        protected virtual void SetItems(int index, IEnumerable <T> values)
        {
            if (items.Any())
            {
                CheckReentrancy();

                var operations = new List <DataPropertyCollectionChangeOperation <T> >();
                foreach (var value in values)
                {
                    operations.Add(GenerateSetOperation(index++, value));
                }

                var e = new DataPropertyCollectionChangingEventArgs <T>(this, operations);
                OnDataPropertyCollectionChanging(e);
                if (!e.Cancel)
                {
                    if (Execute(e.Operations))
                    {
                        OnDataPropertyCollectionChanged(new DataPropertyCollectionChangedEventArgs <T>(this, e.Operations, e.InputOperations));
                    }
                }
            }
        }