public ConditionViewModel(StateMachineCondition model,
                                  TransitionEditorViewModel owner,
                                  ConditionEditServiceManager serviceManager,
                                  IMessageBoxService messageBoxService)
        {
            _model             = model;
            _owner             = owner ?? throw new ArgumentNullException(nameof(owner));
            _serviceManager    = serviceManager ?? throw new ArgumentNullException(nameof(serviceManager));
            _messageBoxService = messageBoxService ?? throw new ArgumentNullException(nameof(messageBoxService));

            Conditions = new ConditionsViewModel(this);

            if (model.Conditions != null)
            {
                foreach (var childCondition in model.Conditions)
                {
                    Conditions.Add(new ConditionViewModel(childCondition, owner, serviceManager, _messageBoxService));
                }
            }

            //Get the current editor
            _editService = _serviceManager[model.ConditionType];

            Fix();

            AddConditionCommand           = new RelayCommand(AddCondition, () => CanAddCondition);
            DeleteCommand                 = new RelayCommand(Delete);
            Conditions.CollectionChanged += ConditionsCollectionChanged;
        }
        public CriteriaTransitionViewModel(TransitionEditorViewModel owner, IMessageBoxService messageBoxService)
        {
            _owner             = owner ?? throw new ArgumentNullException(nameof(owner));
            _messageBoxService = messageBoxService ?? throw new ArgumentNullException(nameof(messageBoxService));
            RootCondition      = _owner.Transition.Condition?.GetModel().ToViewModel(owner);

            AddConditionCommand = new RelayCommand(AddCondition, CanAddCondition);
            AddConditionToolTip = DefaultToolTip;
        }