无法在区域中获取GetView(Prism 5.0)

时间:2017-12-01 02:53:58

标签: c# wpf prism

我有2个模块 在模块A中:

public void Initialize()
    {
        this.RegionManager.RegisterViewWithRegion("MainRegion",typeof(uc_LogIn));
        this.RegionManager.RegisterViewWithRegion("NavigatorRegion", typeof(uc_LogInNavigate));

        if (Application.Current.Resources.Contains("MainContainer"))
            Application.Current.Resources["MainContainer"] = this.Container;
        else
            Application.Current.Resources.Add("MainContainer", this.Container);
        if (Application.Current.Resources.Contains("MainRegionManager"))
            Application.Current.Resources["MainRegionManager"] = this.RegionManager;
        else
            Application.Current.Resources.Add("MainRegionManager", this.RegionManager);
    }

在模块B的功能中:

private void OnLogout()
    {
        RegionManager regionManager = (RegionManager)Application.Current.Resources["MainRegionManager"];
        var view = regionManager.Regions["MainRegion"].GetView("uc_LogIn");
    }

视图"返回null。那么,如何在没有ViewName的RegionManager中获取视图。

OR

如何在RegisterViewWithRegion函数中设置ViewName?

1 个答案:

答案 0 :(得分:0)

问题: 如何在没有ViewName的RegionManager中获取视图。

OR

如何在RegisterViewWithRegion函数中设置ViewName?

你得到" null"因为" MainRegion"那个时候没有任何活跃的视角。

var view = _regionManager.Regions["MainRegion"].ActiveViews;

您将只能查看该地区所有活动视图的集合。

但是我觉得你想问OnLogout()如何导航到Login视图(uc_Login)? 要导航到特定区域管理器,您可以这样做:

您可以在RegionManager上调用RequestNavigate方法,该方法允许您指定要导航的区域的名称。这个方便的方法获取对指定区域的引用,然后调用RequestNavigate方法,如上面的代码示例(https://msdn.microsoft.com/en-us/library/gg430861(v=pandp.40).aspx)所示。

regionManager.RequestNavigate("MainRegion",
                               new Uri("uc_LogIn", UriKind.Relative));