导航以及如何在区域中注册视图?

时间:2016-03-10 11:00:31

标签: c# mvvm prism

我有两个视图,我想在按钮点击之间导航,它们在模块初始化的区域注册,如下所示:

public class ModuleTaxCalc : IModule //PRISM MODULE POWER
{
    IUnityContainer container;
    IRegionManager regionManager;


    public ModuleTaxCalc(IUnityContainer container, IRegionManager regionManager)
    {
        this.container = container;
        this.regionManager = regionManager;

    }

    public void Initialize()
    {

        container.RegisterType<ICustomer, Customer>();

        //container.RegisterType<object, ViewA>("ViewA");
        //container.RegisterType<object, ViewB>("ViewB");
        regionManager.RegisterViewWithRegion("TaxCalculatorRegion", typeof(ViewA));
        regionManager.RegisterViewWithRegion("TaxCalculatorRegion", typeof(ViewB));

    }


}

我的问题是,当应用程序启动时,'ViewA'会自动显示/

如果我改为:

 public void Initialize()
        {

            container.RegisterType<object, ViewA>("ViewA");
            container.RegisterType<object, ViewB>("ViewB");


        }

然后两个视图都是不可见的,只有在按钮点击时才会显示,但我想在这种情况下它们没有在区域中注册。

1 个答案:

答案 0 :(得分:2)

要进行导航,您需要注册导航视图,然后导航到它们。

// register the view
container.RegisterTypeForNavigation<ViewA>();

// and some time later, show it in the region
regionManager.RequestNavigate( "TaxCalculatorRegion", "ViewA" );

如果您使用区域注册视图,它将自动显示在该区域中(View Discovery)。 Prism documentation ...

提供了更详细的信息