2010-04-13 191 views
2

在silverlight棱鏡應用程序中,我有一個區域(ContentControl),並希望在添加其他視圖之前刪除當前活動的視圖。我試圖使用region.PropertyChanged事件,但它不會觸發。我可以在添加新視圖的代碼中執行此操作,但這會分散我的代碼。如何實現這一目標?感謝您的回覆。Silverlight棱鏡區域事件

回答

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); 
    } 
} 

然後在你的代碼,你可以這樣做:regionManager.RemoveCurrentlyActiveAndThenAdd<MyView)("MyRegion");

+0

我接受這個答案,但還是想知道爲什麼會的PropertyChanged不火 – synergetic 2010-04-13 07:08:03