WPF/棱镜导航:无法创建导航目标 BView

WPF / prism navigation : Cannot create navigation target BView

在 wpf/mvvm/prism 应用程序中,当我从一个视图导航到另一个视图时遇到问题。

我在导航函数prepare/request下了一个断点,在AViewModel:

    private void Model(object sender)
    {
        if (sender == null) return;
        var file = ((RawImage)sender).FullName;
        var navParams = new NavigationParameters { { "filein", file } };
        var uri = new Uri(typeof(BView).Name + navParams, UriKind.Relative);
        _regionManager.RequestNavigate(RegionNames.TabRegion, uri, nr =>
        {
            var error = nr.Error;
            var result = nr.Result;
        }); //breakpoint here
    }

ne.Error: 无法创建导航目标 'BView'

在模块中,我注册了以下类型:

    protected override void RegisterTypes()
    {
        Container.RegisterTypeForNavigation<AView>();
        Container.RegisterType<IAViewModel, AViewModel>();
        Container.RegisterTypeForNavigation<BView>();
        Container.RegisterType<IBViewModel, BViewModel>();
        Container.RegisterTypeForNavigation<CView>();
        Container.RegisterType<ICViewModel, CViewModel>();
    }

当我要求导航到 CView 时,它有效但 BView 无效。 每个视图在其自己的文件夹中都有其界面和视图模型。

可能是什么问题? 干杯

我能够进行更多调查并从(模块的)InitializeModule() 进行视图注入:

        var region = RegionManager.Regions[RegionNames.TabRegion];
        var view = Container.Resolve<BView>();
        region.Add(view);
        region.Activate(view);

这导致更易读的消息:

抛出异常:'Microsoft.Practices.Unity.ResolutionFailedException' in Microsoft.Practices.Unity.dll

附加信息:依赖项解析失败,类型 = "Some.Namespace.BView",名称 =“(none)”。

解析时发生异常。

异常是:InvalidOperationException - BViewModel 类型有多个长度为 1 的构造函数。无法消除歧义。

并确保我只有一个带有一个参数的视图模型构造函数:

    public BViewModel(IRegionManager regionManager)
    {
        _regionManager = regionManager;
        Initialize();
    }

我终于可以更进一步了。