void IModuleManager.Remove(string regionName, string key, bool raiseViewModelRemovingEvent) { if (!((IModuleManager)this).IsInjected(regionName, key)) { return; } var region = GetRegion(regionName); var vm = region.GetViewModel(key); if (vm != null && raiseViewModelRemovingEvent) { ViewModelRemovingEventArgs e = new ViewModelRemovingEventArgs(regionName, vm, key); RaiseViewModelRemovingEvent(regionName, e); if (e.Cancel) { return; } } region.Remove(key); if (vm != null) { ViewModelRemovedEventArgs e = new ViewModelRemovedEventArgs(regionName, vm, key); RaiseViewModelRemovedEvent(regionName, e); } }
void RaiseViewModelRemovingEvent(string regionName, ViewModelRemovingEventArgs e) { if (e.ViewModel != null) { GetEvents(e.ViewModel, false).Do(x => x.RaiseViewModelRemoving(this, e)); } GetEvents(regionName, false).Do(x => x.RaiseViewModelRemoving(this, e)); }
void IModuleManagerImplementation.OnViewModelRemoving(string regionName, ViewModelRemovingEventArgs e) { var region = GetRegion(regionName); if (!region.Contains(e.ViewModelKey)) { return; } RaiseViewModelRemovingEvent(regionName, e); }