Gekke Ted
Gekke Ted

Reputation: 71

Switch between Views in different Modules using Prism and Unity

I am making a proof of concept WPF application with Prism 4 and Unity, but I run into some basic problems.

In our solution we have the following projects:

-AppName.Desktop
-AppName.Modules.ModuleA
-AppName.Modules.ModuleB

Having followed some tutorials, explored some examples and searched the internet, I wasn't able to find a suitable answer to a very rudimentary question; how can I switch between two views in different DLL's.

The first view (ModuleAView) is loaded in the Initialize method of ModuleA:

public void Initialize()
{ 
    regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.ModuleAView));
}

When I click in ModuleAView (or on a button in ModuleAView) I want to switch to ModuleBView.

public bool SomeEventInModuleAView(SomeEventParams e)
{
    Uri viewNav = new Uri("ModuleBView", UriKind.Absolute);
    regionManager.RequestNavigate(RegionNames.MainRegion, viewNav);
}

Obviously this won't work, since ModuleA doesn't know where to find ModuleBView. I have read about changing the URI with pack/application/component etc, but I can't seem to make it work.

I was thinking something like this:

Uri("pack://application:,,,/AppName.Modules.ModuleB;component/Views/ModuleBView.xaml",   UriKind.Absolute);

Since loading modules from different assemblies is one of the purposes of Prism, I think it's strange that there aren't any examples in the Prism download to show how this works.

Upvotes: 4

Views: 2469

Answers (1)

Gekke Ted
Gekke Ted

Reputation: 71

I have found the answer. I totally forgot to register the second view.

Check the solution over here: http://compositewpf.codeplex.com/discussions/402860#post940396

Upvotes: 3

Related Questions