首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.InvalidOperationException:必须在Prism ConfigureContainer()中设置ServiceLocationProvider

System.InvalidOperationException:必须在Prism ConfigureContainer()中设置ServiceLocationProvider
EN

Stack Overflow用户
提问于 2018-10-27 17:36:39
回答 1查看 1.9K关注 0票数 0

我是Prism的新手,在Brian介绍棱镜的教程之后,我创建了一个定制的regionAdapter,如下所示。

代码语言:javascript
复制
public class StackPanelRegionAdapter : RegionAdapterBase<StackPanel>
{
    public StackPanelRegionAdapter(IRegionBehaviorFactory regionBehavior )
        :base(regionBehavior)
    {

    }
    protected override void Adapt(IRegion region, StackPanel regionTarget)
    {
        region.Views.CollectionChanged += (s, e) =>
           {
               if(e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
               {
                   foreach(FrameworkElement frameworkElement in e.NewItems)
                   {
                       regionTarget.Children.Add(frameworkElement);
                   }
               }
           };
    }

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

在布斯特拉普

代码语言:javascript
复制
protected override void ConfigureContainer()
{
     RegionAdapterMappings regionAdapterMappings = base.ConfigureRegionAdapterMappings();

     regionAdapterMappings.RegisterMapping(typeof(StackPanel), 
            Container.Resolve<StackPanelRegionAdapter>());
}

我要破例了

System.InvalidOperationException:必须设置ServiceLocationProvider

在这里

代码语言:javascript
复制
RegionAdapterMappings regionAdapterMappings = base.ConfigureRegionAdapterMappings();

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-27 18:02:14

应该在ConfigureRegionAdapterMappings的覆盖中配置区域适配器映射,而不是在伪装成那样的ConfigureContainer覆盖中配置区域适配器映射。

代码语言:javascript
复制
protected override RegionAdapterMappings ConfigureRegionAdapterMappings()
{
    var regionAdapterMappings = base.ConfigureRegionAdapterMappings();
    regionAdapterMappings.RegisterMapping(typeof(StackPanel), ServiceLocator.Current.GetInstance<StackPanelRegionAdapter>());
    return regionAdapterMappings;
} 

提示:您得到了异常,因为ConfigureContainer是在ConfigureServiceLocatorbase.ConfigureRegionAdapterMappings使用ServiceLocator.Current之前调用的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53024579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档