2010-04-13 8 views
2

Dans l'application Silverlight prism, j'ai une région (ContentControl) et je souhaite supprimer la vue actuellement active avant d'ajouter une autre vue. J'ai essayé d'utiliser l'événement region.PropertyChanged mais il ne se déclenche pas. Je peux le faire dans le code où j'ajoute une nouvelle vue, mais cela va disperser mon code. Comment y parvenir? Merci pour votre réponse.Evénements de la région du prisme Silverlight

Répondre

3
public static class RegionManagerExtensions 
{ 
    public static void RemoveCurrentlyActiveAndThenAdd<TView>(
     this IRegionManager regionManager, 
     string regionName) 
    { 
     var region = regionManager.Regions[regionName]; 
     while (region.ActiveViews.Any()) 
      region.Remove(region.ActiveViews.First()); 

     var view = ServiceLocator.Current.GetInstance(typeof(TView)); 
     regionManager.Regions[regionName].Add(view); 
    } 
} 

Ensuite, dans votre code que vous pouvez faire: regionManager.RemoveCurrentlyActiveAndThenAdd<MyView)("MyRegion");

+0

J'accepte cette réponse, mais voudrais encore savoir pourquoi PropertyChanged ne serait pas le feu – synergetic