public FractalChooserDialog([CanBeNull] FractalCalculator.FractalCalculator selectedFractal = null, [CanBeNull] FractalCalculator.FractalCalculator[] fractalCalculators = null, bool showConstantEditing = true) { _showConstantEditing = showConstantEditing; Fractals = fractalCalculators ?? FractalCalculator.FractalCalculator.GetFractalCalculators(); Fractals = Fractals.Select(x => selectedFractal == null || selectedFractal.Name != x.Name ? x : selectedFractal).ToArray(); // replaces the calculator inside the fractals array with the selected array (so that the settings of the selected are applied) SelectedFractal = selectedFractal == null ? Fractals[0] : Fractals.First(x => x.Name == selectedFractal.Name); InitializeComponent(); MainGrid.DataContext = this; FractalSettingsGrid.DataContext = SelectedFractal; }