public override void Destroy() { ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedRenderStages); ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedRenderFeatures); ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedCameraSlots); ServiceProvider.Get <SelectionService>().UnregisterSelectionScope(SelectedSharedRenderers); SelectedRenderStages.CollectionChanged -= SelectionChanged; SelectedRenderFeatures.CollectionChanged -= SelectionChanged; SelectedCameraSlots.CollectionChanged -= SelectionChanged; SelectedSharedRenderers.CollectionChanged -= SelectionChanged; SelectedRendererLinks.CollectionChanged -= SelectionChanged; sharedRenderersNode.ItemChanged -= SharedRenderersChanged; renderStagesNode.ItemChanged -= RenderStagesChanged; renderFeaturesNode.ItemChanged -= RenderFeaturesChanged; cameraSlotsNode.ItemChanged -= CamerasSlotsChanged; AssemblyRegistry.AssemblyRegistered -= AssembliesUpdated; AssemblyRegistry.AssemblyUnregistered -= AssembliesUpdated; Blocks.Cast <GraphicsCompositorBlockViewModel>().ForEach(x => x.Destroy()); base.Destroy(); }