我可以在没有视图帮助的情况下制作 SingleActiveRegion 吗?

Can I make a SingleActiveRegion without help from the view?

我有一个流畅 RibbonTabItem 的区域适配器,我希望它一次只显示一个 RibbonGroupBox。我希望这能完成这项工作:

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

但它不起作用(即每当我将该区域导航到新视图时,我都会得到一个 附加 新视图),除非我让我的视图实现 IRegionMemberLifetime 和 return false 来自 KeepAlive.

问题:我错过了什么?如何创建一个在添加新视图之前始终清除其 ViewsCollection 的区域?

我的错。我应该观察我所在地区的 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();
    }
}