2009-09-30 9 views
8

Supongo que tengo una aplicación C# Silverlight 3 con varias páginas. La primera página se llama Inicio y la segunda página se llama Detalles. La única forma de navegar a los detalles es mediante programación. ¡¿Cómo hago esto?! Buscado por todas partes por la respuesta y todo lo que he encontrado son implementaciones asignador uri xaml ....C# Silverlight 3 - Navega programáticamente entre páginas?

ayuda muy apreciada

+0

¿Qué versión de Silverlight? – BigBlondeViking

+0

Silverlight 3 ........... – Goober

Respuesta

7

¿Ha probado el NavigationService?

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

+0

sí, solo me dice que la página no existe ....... cuando lo hace. – Goober

+0

En Silverlight URI, los reverenses son relativos al XAP. El URI para la página de detalles (si está en la raíz de su proyecto) debe ser 'nuevo Uri ("/ Details.xaml", UriKind.Relative) –

+0

Te digo que al 100% esto no funciona. Nueva plantilla de aplicación empresarial Silverlight, intentar navegar literalmente a cualquier página no funciona con ese método. – Goober

7

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> 

Incluso su "detalles" de la página debería corresponderse (a pesar de lo que ha dicho.)

7

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

XAML

+0

Esto funciona muy bien en un ViewModel –

+0

¡¡Esto funciona !!!!!! – 1myb

2

Trate de usar esto. Esto funcionó para mí.

((System.Windows.Controls.Frame) (this.Parent)). Navigate (nuevo Uri ("/ Importar", UriKind.Relativo));

5

La mejor solución es:

añadir este código a sus App.xaml.cs:

private static Grid root; 

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    root = new Grid(); 
    root.Children.Add(new MainPage()); 

    this.RootVisual = root; 
} 

public static void Navigate(UserControl newPage) 
{ 
    UserControl oldPage = root.Children[0] as UserControl; 

    root.Children.Add(newPage); 
    root.Children.Remove(oldPage); 
} 

Y luego, para navegar entre las páginas, vas a tener que llamar a:

App.Navigate(new OtherSamplePage()); 
+0

He estado buscando en todas partes esta respuesta +3 si pudiera – MJ33

Cuestiones relacionadas