Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Message Based Navigation for WP7 MVVM Apps

Download

Right click “Save as…”

Do you have an MVVM-based Windows Phone 7 application and you don't like having to hook into the RootFrame to navigate between pages?  Do you wish you could just "ask" to navigate to a new view from your view model? One possible solution can be found in this screencast.

Using an message bus to process navigation messages, view models can publish messages that are then handled by a separate navigation service, successfully decoupling your view model from the Windows Phone navigation service. 

Get the finished source code here

Tags:

Follow the Discussion

  • Linus KLinus K

    That seems like an awful lot of code and xaml spread out.

    I solve this problem by having my VMs depend upon a IMyAppNavigationService that has methods such as
    void NavigateToPersonView(string id);

    That way all the URIs and navigation logic is in one class, the MyAppNavigationService. Even though message buses are cool I don't see the benefit here.

    /Linus

  • I like to wire up XAML as much as I can.  I don't think it is all that much code really... the MessageBus and NavigationHandler (which is the same thing as your IMyAppNavigationService) are very small.  I replace the dependency you have on the nav service with a dependency on the message bus, which provides me additional capabilities.  Too each there own... whatever works for the apps you build.  Just thought it was an interesting alternative.

Remove this comment

Remove this thread

close

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.