Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 28th, 2012  |  syntax: None  |  size: 1.24 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Close view that contains Regions
  2. RegionManager.SetRegionName(RegionControl, "MyRegionName");
  3. RegionManager.SetRegionManager(RegionControl, _globalRegionManager);
  4.        
  5. public interface IRegionContainer
  6. {
  7.     IEnumerable<String> RegionNames { get; }
  8. }
  9.  
  10.     public void RequestClose(string regionName, string viewContract)
  11.     {
  12.         ContainerRegistration registration = _unityContainer.Registrations.SingleOrDefault(t => t.Name == viewContract);
  13.         if (registration == null) throw new Exception("ViewContract is not registered");
  14.         IEnumerable<object> candidateViews = _regionManager.Regions[regionName].Views.Where(t => t.GetType() == registration.MappedToType);
  15.         foreach (object viewInstance in candidateViews)
  16.         {
  17.             var regionContainer = viewInstance as IRegionContainer;
  18.             if (regionContainer != null) //View defines regions?
  19.             {
  20.                 foreach (string rName in regionContainer.RegionNames)
  21.                 {
  22.                     var success = _regionManager.Regions.Remove(rName);
  23.                     if (success == false) throw new Exception("Can't remove region: " + rName);
  24.                 }
  25.             }
  26.             _regionManager.Regions[regionName].Remove(viewInstance);
  27.         }
  28.     }