views:

3316

answers:

4

Say I have a C# Silverlight 3 application with a number of pages. The first page is called Home, and the second page is called Details. The only way to navigate to details is programmatically. How do I do this?! Looked everywhere for the answer and all i've found are xaml uri mapper implementations....

Help greatly appreciated

+1  A: 

Have you tried the NavigationService?

this.NavigationService.Navigate(new Uri("Details.xaml", UriKind.Relative));

Kees Kleimeer
yes, just tells me that the page doesnt exist.......when it does.
Goober
In Silverlight URI reverenses are relative to the XAP. The Uri for the detailspage (if it's in the root of your project) should be 'new Uri("/Details.xaml", UriKind.Relative)
Kees Kleimeer
I'm telling you 100% this does not work. Brand new Silverlight Business Application Template, Trying to navigate to literally any page doesn't work using that method.
Goober
Are you trying to navigation from ur ViewModel in a MVVM app, or from the xaml.cs?
Neil
+2  A: 

c#:

this.navContent.Navigate(new Uri("Welcome", UriKind.Relative));

XAML:

<navigation:Frame
    x:Name="navContent"
    HorizontalContentAlignment="Stretch"
    VerticalContentAlignment="Stretch"
    Source="Welcome">
    <navigation:Frame.UriMapper>
        <uriMapper:UriMapper>
            <uriMapper:UriMapping Uri="Welcome" MappedUri="/Views/Welcome.xaml" />
            <uriMapper:UriMapping Uri="Profile" MappedUri="/Views/Profile.xaml" />
            <uriMapper:UriMapping Uri="Details/{id}" MappedUri="/Views/Details.xaml?photoid={id}" />
        </uriMapper:UriMapper>
    </navigation:Frame.UriMapper>
</navigation:Frame>

Even your "details" page should be mapped (despite what you said.)

vidalsasoon
+2  A: 

C# App.Current.Host.NavigationState = "/Welcome";

XAML

Vijay
A: 

Try using this. This worked for me.

((System.Windows.Controls.Frame)(this.Parent)).Navigate(new Uri("/Import",UriKind.Relative));

Eklavya Gupta