【问题标题】:WPF / prism navigation : Cannot create navigation target BViewWPF/棱镜导航:无法创建导航目标BView
【发布时间】:2016-06-09 13:24:21
【问题描述】:

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

我在 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 不能。 每个视图在自己的文件夹中都有自己的界面和视图模型。

可能是什么问题? 干杯

【问题讨论】:

    标签: c# wpf mvvm containers prism


    【解决方案1】:

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

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

    这导致了更易读的信息:

    抛出异常:Microsoft.Practices.Unity.dll 中的“Microsoft.Practices.Unity.ResolutionFailedException”

    附加信息:依赖解析失败,type = "Some.Namespace.BView", name = "(none)"。

    在解决时发生异常。

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

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

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

    我终于能够走得更远了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 2023-03-14
      • 1970-01-01
      • 2017-02-02
      • 1970-01-01
      相关资源
      最近更新 更多