void visual_OnSourceDeath(OrganismVisual source, EventArgs e) { organismVisuals.Remove(source); foreach(UIElement visual in source.getVisuals()) { Dispatcher.Invoke(new Action(() => canvas.Children.Remove(visual))); } }
void MainWindow_OnOrganismAddition(Organism source, EventArgs e) { OrganismVisual visual = null; Dispatcher.Invoke(new Action(() => visual = new OrganismVisual(source, new Ellipse(), new Polygon(), new PointCollection(), new TextBlock()))); organismVisuals.Add(visual); foreach(UIElement drawable in visual.getVisuals()) { Dispatcher.Invoke(new Action(() => canvas.Children.Add(drawable))); } visual.OnSourceDeath += visual_OnSourceDeath; }