Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/CalculationsView.cs =================================================================== diff -u -r0e21594391c0a089226ba1cda72846898125dd82 -r4819ca0dccbbe9e2ed5e5dc8f9dcdc3a328aa57e --- Riskeer/Common/src/Riskeer.Common.Forms/Views/CalculationsView.cs (.../CalculationsView.cs) (revision 0e21594391c0a089226ba1cda72846898125dd82) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/CalculationsView.cs (.../CalculationsView.cs) (revision 4819ca0dccbbe9e2ed5e5dc8f9dcdc3a328aa57e) @@ -27,6 +27,7 @@ using Core.Common.Base.Geometry; using Core.Common.Controls.DataGrid; using Core.Common.Controls.Views; +using Core.Common.Util.Extensions; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; @@ -58,6 +59,9 @@ private RecursiveObserver calculationGroupObserver; private CalculationGroup calculationGroup; + + private List dataSource; + public event EventHandler SelectionChanged; /// @@ -313,8 +317,11 @@ return; } + dataSource?.ForEachElementDo(UnsubscribeFromCalculationRow); + if (!(listBox.SelectedItem is FailureMechanismSection failureMechanismSection)) { + dataSource = null; DataGridViewControl.SetDataSource(null); return; } @@ -327,13 +334,33 @@ PrefillComboBoxListItemsAtColumnLevel(); - List dataSource = calculations.Select(CreateRow).ToList(); + dataSource = calculations.Select(CreateRow).ToList(); DataGridViewControl.SetDataSource(dataSource); DataGridViewControl.ClearCurrentCell(); UpdateComboBoxColumns(); + + dataSource.ForEachElementDo(SubscribeToCalculationRow); } + /// + /// Handle for subscribing to all individual calculation rows in the view. + /// + /// The specific calculation row to subscribe to. + protected virtual void SubscribeToCalculationRow(TCalculationRow calculationRow) + { + + } + + /// + /// Handle for unsubscribing from all individual calculation rows in the view. + /// + /// The specific calculation row to unsubscribe from. + protected virtual void UnsubscribeFromCalculationRow(TCalculationRow calculationRow) + { + + } + private void InitializeListBox() { listBox.DisplayMember = nameof(FailureMechanismSection.Name);