static void OnManagedFrameworkElementUnloaded(object sender, RoutedEventArgs e) { // Call Unload() on the element's DataContext. FrameworkElement elem = sender as FrameworkElement; if (elem == null) { return; } IUnloadable unloadable = elem.DataContext as IUnloadable; if (unloadable == null) { return; } unloadable.Unload(); // Set IsManaged to false for the element so that the Unloaded // event handler is detached, which ensures that it is not // referenced any longer. That will allow the GC to collect it. SetIsManaged(elem, false); }
public void Unload() { for (int i = 0; i < TotalComponents; ++i) { if (Components[i] is IUnloadable) { IUnloadable CurrentUnloadable = Components[i] as IUnloadable; CurrentUnloadable.Unload(); if (Components[i].IsComponentManager()) { EngineComponentManager Submanager = Components[i] as EngineComponentManager; Submanager.Unload(); } } } }
public UnloadableItem(IUnloadable o, MemberPath memberPath) { UnloadableObject = o; MemberPath = memberPath; }