コード例 #1
0
        private void Insert(ActionHolder actionHolder, int position = -1)
        {
            if (position == -1)
            {
                position = Children.Count;
            }
            var constructorElement = ActionControlResolver.Create(actionHolder, AlgorithmContext);
            var control            = ((FrameworkElement)constructorElement);

            control.Margin = new Thickness(0, 1, 0, 0);
            constructorElement.Refresh(actionHolder, AlgorithmContext);
            constructorElement.Modified   += (element) => Modified?.Invoke(element);
            constructorElement.NeedRemove += (element) => {
                _action.ActionHolders.Remove(actionHolder);
                Children.Remove(control);
                Modified?.Invoke(this);
            };
            constructorElement.NeedAddNext += (element) => {
                SelectCoreActionView.Show((type) => {
                    var index           = Children.IndexOf(control) + 1;
                    var newActionHolder = new ActionHolder()
                    {
                        Action = _manager.CreateInstance(type, AlgorithmContext)
                    };
                    _action.ActionHolders.Insert(index, newActionHolder);
                    Insert(newActionHolder, index);
                    Modified?.Invoke(this);
                });
            };
            Children.Insert(position, control);
        }
コード例 #2
0
 public void AddFirst()
 {
     SelectCoreActionView.Show((type) => {
         var newActionHolder = new ActionHolder()
         {
             Action = _manager.CreateInstance(type, AlgorithmContext)
         };
         _action.ActionHolders.Insert(0, newActionHolder);
         Insert(newActionHolder, 0);
         Modified?.Invoke(this);
     });
 }