Re: mapping views to view models, I like to use a convention to map view models to views (e.g., FooViewModel should expect a .xaml file named FooPage, FooView or FooWindow). So you shouldn't have to store the mapping explicitly.
In Magellan with just MVVM it goes something like this: 1. You tell an INavigator that you want to navigate, specifying: o The name of the ViewModel ("foo") o Any parameters (customerID=36) 2. The INavigator maps it to a handler 3. The MVVM handler resolves the VM from the IOC container 4. The MVVM handler looks for an Initialize() method on the view mode that takes the navigation parameters - e.g., public void Initialize(int customerId) {...} 5. A view is found for the ViewModel based on the conventions above 6. The view's DataContext is set to the ViewModel The process is different if you're using MVC controllers, but not too different. The VM also implements an IViewAware interface and is notified about view lifetime events (e.g., activated, deactivating (closing) and deactivated). And each step uses interfaces and strategies to make it easy to plug in to, like ASP.NET MVC. Paul From: ozwpf-boun...@list.ozwpf.com [mailto:ozwpf-boun...@list.ozwpf.com] On Behalf Of Winston Pang Sent: Wednesday, 3 November 2010 6:03 PM To: ozDotNet; ozWPF Subject: MVVM in a navigational paradigm Hey guys, I'm trying to apply MVVM in the WPF navigation model. I was just doing some thoughts around it Apart from the rule that the view model shouldn't know about the view, how would a particular view spawn another view, and push it to the navigation service for example? I've been playing around with some ideas of holding a mapping between the View and ViewModel in a global list in App. Then have App register against the messenger/mediator to respond to any other view model's wanting to spawn a new view and navigating it to it. I'm not sure if I'm on the right track. Would love to see how some other people have done it on here? Thanks. --Winston