void abstractCases_ElementRemoved(object sender, ListChangedEventArgs<AbstractCase> args)
{
Dictionary<AbstractCase, LinkedList<AbstractCase>> adjacency = BuildAnalysisCaseAdjacency();
bool cancel = false;
// Cancel if there are dependencies.
if (adjacency.ContainsKey(args.ChangedObject) && adjacency[args.ChangedObject].Count > 0)
cancel = true;
else
{
// Deactivate before removing
args.ChangedObject.IsActive = false;
// Cancel remove if can't deactivate
cancel = args.ChangedObject.IsActive;
}
args.Cancel = cancel;
}