public void RemoveViewport(ShadowVisual shadowViewport) { shadowViewport.ViewportChanged -= Raw_ViewportChanged; _viewports.Remove(shadowViewport.Visual); ViewportRemoved?.Invoke(this, new ShadowViewportEventArgs(shadowViewport)); // update viewport count on hosting monitor ShadowMonitor monitor = _monitors[shadowViewport.Monitor]; monitor.RemoveViewport(); // recalculate, delayed ScheduleGeometryChange(); }