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); }
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); }); }