RegionManager.RequestNavigate只让我获得System.Object?

时间:2018-12-03 15:16:51

标签: c# wpf unity-container prism

我需要为我的退休同事WPF项目添加一些功能。试图复制导航功能,但它们无法正常运行。 我想在主窗口中打开自己的XAML文件,但我得到的只是System.Object。

在这里,我将视图注册为:

        public override void Initialize()
    {


        UnityContainer.RegisterType<RelationView>();
        UnityContainer.RegisterType<RelationNavigationItemView>();


        UnityContainer.RegisterTypeForNavigation<RelationView>();


        RegionManager.RegisterViewWithRegion(RegionNames.NavigationRegion, typeof(RelationNavigationItemView));//this works out fine appears in the Navigation Part

    }

RelationNavigationItemView只是一个按钮,应该在MainWindow中打开RelationView。

在这里应该发生以下情况:

    private static Uri RelationViewUri = new Uri("/RelationView", UriKind.Relative);
    private IRegionManager _regionManager;
    private DelegateCommand _navigateCommand;

    public RelationNavigationViewModel(IRegionManager regionManager)
    {
        _regionManager = regionManager;
    }

    public ICommand NavigateCommand
    {
        get
        {
            return _navigateCommand ?? (_navigateCommand = new DelegateCommand(NavigateCommandExecute, NavigateCommandCanExecute));
        }
    }

    private bool NavigateCommandCanExecute()
    {
        return true;
    }

    private void NavigateCommandExecute()
    {
        _regionManager.RequestNavigate(RegionNames.MainContentRegion, RelationViewUri);  //Here should the new window appears and the ViewModel Constructor should be called but nothing happens, I only get System.Object in the MainContentRegion
    }

该项目运行的棱镜版本为 6.3

我希望有人可以帮助我。

最大的感谢和问候

2 个答案:

答案 0 :(得分:0)

您应该只导航到“ RelationView”`。这里不需要uri,只会增加潜在的错误。

答案 1 :(得分:0)

谢谢你们,现在可以使用了。构造函数是错误的。

我希望使用UnityContainer而不是IUnityContainer。