public ProtocolParameterViewModel( IDataApiClient dataApiClient, IReadonlyObjectDatabase <DataCollectionProtocolParameter> protocolParameterDatabase, DataCollectionProtocolParameter parameter = null) { valueViewModelFactory = new ParameterValueViewModelFactory(dataApiClient); NameAutoCompleteViewModel = new AutoCompleteTextBoxViewModel <DataCollectionProtocolParameter>( x => x.Name, protocolParameterDatabase, new ProtocolParameterAutoCompleteMatcher(), allowNewValue: true, objectBuilder: name => new DataCollectionProtocolParameter(name, null, false, DataCollectionProtocolParameterType.Text)); NameAutoCompleteViewModel.PropertyChanged += NameAutoCompleteViewModel_PropertyChanged; var dataTypes = Task.Run(async() => await dataApiClient.ListCollectionNamesAsync(true)).Result; DataTypeAutoCompleteViewModel = new AutoCompleteTextBoxViewModel <string>( x => x, new FixedSetDatabase <string>(dataTypes.ToDictionary(x => x, x => x)), new StringAutoCompleteMatcher()); DataTypeAutoCompleteViewModel.PropertyChanged += DataTypeAutoCompleteViewModel_PropertyChanged; ValueViewModel = valueViewModelFactory.Create(SelectedParameterType, DataTypeAutoCompleteViewModel.SelectedObject); if (parameter != null) { NameAutoCompleteViewModel.SelectedObject = Task.Run(() => protocolParameterDatabase.GetFromIdAsync(parameter.Id).Result).Result; IsMandatory = parameter.IsMandatory; SelectedParameterType = parameter.Type; DataTypeAutoCompleteViewModel.SelectedObject = parameter.DataType; DefaultValue = parameter.DefaultValue; } }
public ProtocolParameterResponseViewModel( DataCollectionProtocolParameter parameter, ParameterValueViewModelFactory valueViewModelFactory, string response = null) { Name = parameter.Name; var value = response ?? parameter.DefaultValue; IsMandatory = parameter.IsMandatory; ValueViewModel = valueViewModelFactory.Create(parameter.Type, parameter.DataType, value); ((IParameterValueViewModel)ValueViewModel).PropertyChanged += ProtocolParameterResponseViewModel_PropertyChanged; }