private void SetSimulationNamesInView() { // populate the simulation names in the view. IModel scopedParent = ScopingRules.FindScopedParentModel(summaryModel); if (scopedParent is Simulation parentSimulation) { if (scopedParent.Parent is Experiment) { scopedParent = scopedParent.Parent; } else { summaryView.SimulationDropDown.Values = new string[] { parentSimulation.Name }; summaryView.SimulationDropDown.SelectedValue = parentSimulation.Name; return; } } if (scopedParent is Experiment experiment) { string[] simulationNames = experiment.GenerateSimulationDescriptions().Select(s => s.Name).ToArray(); summaryView.SimulationDropDown.Values = simulationNames; if (simulationNames != null && simulationNames.Count() > 0) { summaryView.SimulationDropDown.SelectedValue = simulationNames.First(); } } else { List <ISimulationDescriptionGenerator> simulations = summaryModel.FindAllInScope <ISimulationDescriptionGenerator>().Cast <ISimulationDescriptionGenerator>().ToList(); simulations.RemoveAll(s => s is Simulation && (s as IModel).Parent is Experiment); List <string> simulationNames = simulations.SelectMany(m => m.GenerateSimulationDescriptions()).Select(m => m.Name).ToList(); simulationNames.AddRange(summaryModel.FindAllInScope <Models.Optimisation.CroptimizR>().Select(x => x.Name)); summaryView.SimulationDropDown.Values = simulationNames.ToArray(); if (simulationNames != null && simulationNames.Count > 0) { summaryView.SimulationDropDown.SelectedValue = simulationNames[0]; } } }