public RegisterRangeViewModel(IModbusAdapterProvider modbusAdapterProvider, RangeModel rangeModel, SlaveViewModel parent, IDirty dirty)
            : base(dirty)
        {
            if (rangeModel == null)
                throw new ArgumentNullException(nameof(rangeModel));

            _parent = parent;
            _dirty = dirty;
            _modbusAdapterProvider = modbusAdapterProvider;

            EditCommand = new RelayCommand(Edit, CanEdit);
            ReadCommand = new RelayCommand(Read, CanRead);
            WriteCommand = new RelayCommand(Write, CanWrite);
            DeleteCommand = new RelayCommand(Delete, CanDelete);

            PopulateFromModel(rangeModel);
        }
        public SlaveViewModel(IModbusAdapterProvider modbusAdapterProvider, SlaveModel slaveModel, IDirty dirty)
        {
            _modbusAdapterProvider = modbusAdapterProvider;
            _dirty = dirty;
            if (slaveModel == null) throw new ArgumentNullException(nameof(slaveModel));

            Name = slaveModel.Name;
            SlaveId = slaveModel.SlaveId;

            AddRegistersCommand = new RelayCommand(AddRegisters, CanAdd);

            if (slaveModel.Ranges != null)
            {
                foreach (var range in slaveModel.Ranges)
                {
                    var rangeViewModel = new RegisterRangeViewModel(modbusAdapterProvider, range, this, _dirty);

                    _ranges.Add(rangeViewModel);
                }
            }

            RenameCommand = new RelayCommand(Rename, CanRename);
        }