internal virtual void Dispose() { if (IsViewport) { _parent.RemoveViewport(this); } Visual.Moved -= Visual_Modified; Visual.Resized -= Visual_Modified; Visual.Children.CollectionChanged -= Visual_Children_CollectionChanged; foreach (ShadowVisual child in Children.Values) { child.Dispose(); } }