如何在Prism中的引导过滤器中获取RegionManager

时间:2012-01-21 11:32:48

标签: prism bootstrapper

我在使用方法

时遇到了问题
this.regionManager.RegisterViewWithRegion("TextRegion", typeof(TextView));

如果我在某些方法中在boot strapper中编写上面的代码。它不起作用,因为我无法从代码

获取regionmanager的对象
IRegionManager manager = this.Container.Resolve<IRegionManager>();

上面的代码抛出异常“异常消息是:当前构建操作(构建密钥构建密钥[Microsoft.Practices.Composite.Regions.IRegionManager,null])失败:当前类型,Microsoft.Practices.Composite.Regions。 IRegionManager是一个接口,无法构造。你是否缺少类型映射?“

但是上面的代码工作我将它放入一些ViewModel并注入IRegionManager。

 public HeaderControlViewModel(IEventAggregator aggregator, IRegionManager regionManager)
        : base(aggregator)
    {
        this.regionManager = regionManager;
        this.regionManager.RegisterViewWithRegion("TextRegion", typeof(TextView));
    } 

但我不想这样做。我希望只使用bootstrapper配置所有内容。

请告诉我为什么bootstrapper无法获取RegionManager对象?我该如何解决这个问题?

非常感谢...

1 个答案:

答案 0 :(得分:-1)

// ... App.xaml.cs

   public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            Bootstrapper bs = new Bootstrapper();
            bs.Run();
            bs.ShowDefault();
        }
    }

// ... Bootstrapper.cs

public void ShowDefault()
{
   RegionManager.GetRegionManager(Application.Current.MainWindow)
.RequestNavigate("MainRegion", "ViewA");
}

// ...