2016-12-03 23 views
0

我有一個流利的地區適配器RibbonTabItem,我希望它一次只顯示一個RibbonGroupBox。我預計今年做的工作:我可以在沒有視圖幫助的情況下製作SingleActiveRegion嗎?

protected override IRegion CreateRegion() 
    { 
     return new SingleActiveRegion(); 
    } 

,但它不工作(即每當我瀏覽該地區的一個新的觀點,我得到一個額外的視圖),除非我把我的意見實行IRegionMemberLifetime並從KeepAlive返回false

問題:我錯過了什麼?如何在添加新視圖之前創建一個總是清除其ViewsCollection的區域?

回答

0

我的不好。我應該觀察到我區域的ActiveViews(不是Views)......現在工作正常。

下面是完整的代碼:

public class RibbonTabItemRegionAdapter : RegionAdapterBase<RibbonTabItem> 
{ 
    public RibbonTabItemRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory) : base(regionBehaviorFactory) 
    { 
    } 

    protected override void Adapt(IRegion region, RibbonTabItem regionTarget) 
    { 
     region.ActiveViews.CollectionChanged += (s, e) => 
               { 
                switch (e.Action) 
                { 
                 case NotifyCollectionChangedAction.Add: 
                  foreach (var newItem in e.NewItems) 
                   regionTarget.Groups.Add((RibbonGroupBox)newItem); 
                  break; 
                 case NotifyCollectionChangedAction.Remove: 
                  foreach (var oldItem in e.OldItems) 
                   regionTarget.Groups.Remove((RibbonGroupBox)oldItem); 
                  break; 
                } 
               }; 
    } 

    protected override IRegion CreateRegion() 
    { 
     return new SingleActiveRegion(); 
    } 
} 
相關問題