Silverlight 如何获取区域名称?

Silverlight 如何获取区域名称?,silverlight,prism,Silverlight,Prism,使用Silverlight和Prism。 我在TabControl中创建了一个新的作用域,如下所示: IRegionManager regionManager = tabControl.Add(viewRegions, UNIQUEID, true); 然后从选项卡Control SelectionChanged事件中,我想获取该区域的名称。 所以我说: 因此,现在我手头上有一个作用域区域管理器=xxx 但是我怎么知道它的名字呢?(我分配给它的“UNIQUEID”参数) 如何操作?如果您有Re

使用Silverlight和Prism。 我在TabControl中创建了一个新的作用域,如下所示:

IRegionManager regionManager = tabControl.Add(viewRegions, UNIQUEID, true);
然后从选项卡Control SelectionChanged事件中,我想获取该区域的名称。 所以我说:

因此,现在我手头上有一个作用域区域管理器=xxx

但是我怎么知道它的名字呢?(我分配给它的“UNIQUEID”参数)


如何操作?

如果您有RegionManager和视图,那么您可以获得区域名称(但我不知道您为什么想要)。如果你像这样环游整个区域,你可以得到你想要的。您必须保留对作用域RegionManager的引用,但这是无法避免的。(有一些额外的代码演示了其他人可能也想做的事情)


对不起,这对我不起作用。当我在其他区域(在我的例子中是TabControl)内添加一个作用域时,新添加的作用域不在_RegionManager.Regions内。我知道这一点。我的意思是,你必须像你一样通过作用域,区域管理者不明白你的意思。我如何知道作用域名称?您下面的评论表明,我试图回答的问题不是您所问的问题。你能不能用某种方式重新表述一下,让我明白你想做什么?看看我上面的代码。。。添加作用域时,会为其指定一个名称。在我上面的示例中,名称是“UNIQUEID”参数。然后,稍后我想从另一个类中检索该名称。我找到了范围区域管理器(在我的示例中为“xxx”)。我怎么知道它的名字?你就照我说的做吧。您必须查看IRegionManager的区域列表:xxx。区域这样做将给出“xxx”内的区域。我正在寻找什么是“xxx”名称。您想要的是分配给该视图的标识符,而不是区域本身的名称。你想要这个有什么原因吗?有一个很好的机会,你将不得不跟踪自己。
TabItem item = e.AddedItems[0] as TabItem;
FrameworkElement view = item.Content as FrameworkElement;
IRegionManager xxx = RegionManager.GetRegionManager(view);
    private void UnloadRegion()
    {
        foreach (IRegion region in xxx.Regions)
        {
            for (int ix = region.ActiveViews.Count() - 1; ix >= 0; ix--)
            {
               if (WhateverYourCurrentViewIs == region.ActiveViews.Last())
               {
                    string RegionName = region.Name;
                    //there is the name
               {
            }
        }
    }