public ModbusMemorySettingsViewModel() { NumberOfPointsCollection = new ObservableCollection <int>() { 8, 12, 16, 32 }; NumberOfPoints = NumberOfPointsCollection[1]; AddressStepDownCommand = new DelegateCommand(OnAddressStepDownExecute); AddressStepUpCommand = new DelegateCommand(OnAddressStepUpExecute); _modbusMemorySettings = new ModbusMemorySettings(); }
private void OnModbusMemorySettingsChanged(ModbusMemorySettings modbusMemorySettings) { bool isQueriesStartedBefore = IsQueriesStarted; if (modbusMemorySettings == null) { return; } IsQueriesStarted = false; if (ModbusMemoryEntityViewModels.Count != modbusMemorySettings.NumberOfPoints) { ModbusMemoryEntityViewModels.Clear(); } //всякие условия вокруг - оптимизация вывода, чтобы не перерисовывать все каждый раз for (int i = 0; i < modbusMemorySettings.NumberOfPoints; i++) { if (_modbusConversionParametersViewModels.Count < i + 1) { _modbusConversionParametersViewModels.Add(new ModbusConversionParametersViewModel()); } if (ModbusMemoryEntityViewModels.Count <= i) { ModbusMemoryEntityViewModel modbusMemoryEntityViewModel = new ModbusMemoryEntityViewModel(_modbusConversionParametersViewModels[i]); ModbusMemoryEntityViewModels.Add(modbusMemoryEntityViewModel); } ModbusMemoryEntityViewModels[i].SetAddress(modbusMemorySettings.BaseAdress + i); ModbusMemoryEntityViewModels[i].SetError(); } if (isQueriesStartedBefore) { IsQueriesStarted = true; } else { ModbusMemoryEntityViewModels.ForEach((model => model.SetError())); } }