【问题标题】:how to get the region name?如何获取区域名称?
【发布时间】:2010-04-16 00:00:04
【问题描述】:

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

IRegionManager regionManager = tabControl.Add(viewRegions, UNIQUEID, true);

然后我想从 TabControl SelectionChanged 事件中获取该区域的名称。 所以我走了:

TabItem item = e.AddedItems[0] as TabItem;
FrameworkElement view = item.Content as FrameworkElement;
IRegionManager xxx = RegionManager.GetRegionManager(view);

所以现在我手头有范围区域经理 = xxx!

但是我如何得到它的名字呢? (我分配给它的“UNIQUEID”参数)。

怎么做?

【问题讨论】:

  • 您在下面的评论表明我试图回答的问题不是您要问的问题。您能否以某种方式重新措辞,以便我能理解您要做什么?
  • 看看我上面的代码......当添加一个作用域区域时,它被赋予了一个名称。在我上面的示例中,名称是“UNIQUEID”参数。然后稍后我想从另一个类中检索该名称。我找到了作用域区域管理器(在我的示例中为“xxx”)。我怎么知道它的名字??
  • 你会照我说的做。您必须查看 IRegionManager 的区域列表:xxx.Regions
  • 这样做会给我“xxx”内的区域。我正在寻找什么是“xxx”名称。
  • 您想要分配给该视图的标识符,而不是区域本身的名称。你想要这个有理由吗?您很有可能必须自己跟踪。

标签: silverlight prism


【解决方案1】:

如果您有 RegionManager 和 View,那么您可以获得区域名称(但我不知道您为什么想要)。如果你像这样循环通过 regionmanger,你可以得到你想要的。您必须保留对作用域 RegionManager 的引用,但没有办法解决这个问题。 (还有一些额外的代码演示了其他人可能也想做的事情)

    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
               {
            }
        }
    }

【讨论】:

  • 对不起,但这对我不起作用。当我在其他区域(在我的情况下为 TabControl)添加范围区域时,新添加的范围区域不在 _RegionManager.Regions 内。
  • 我知道。我是说你必须像 _RegionManager 一样通过作用域区域
  • 我不明白你的意思。我怎么知道作用域的区域名称?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
相关资源
最近更新 更多