Llame a NavigationService desde Silverlight UserControl que contiene el marco de navegación

StackOverflow https://stackoverflow.com//questions/9622993

  •  09-12-2019
  •  | 
  •  

Pregunta

Tengo un USERCONTROL que contiene un marco con un urimapper.Este es también mi rootavisual, por lo que es lo que se carga cuando se carga la aplicación.Este es mi (simplificado) XAML:

<UserControl>
    <navigation:Frame x:Name="ContentFrame" Source="/Page1">
        <navigation:Frame.UriMapper>
            <uriMapper:UriMapper>
                <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
            </uriMapper:UriMapper>
        </navigation:Frame.UriMapper>
    </navigation:Frame>

<HyperlinkButton x:Name="Page1Link" NavigateUri="/Page1" TargetName="ContentFrame" Content="Page1"/>
<HyperlinkButton x:Name="Page2Link" NavigateUri="/Page2" TargetName="ContentFrame" Content="Page2"/>
</UserControl>

Todo esto funciona bien, pero ahora quiero agregar un botón de espalda.Cuando el usuario hace clic en el botón, quiero llamar

NavigationService.GoBack();

Puedo llamar al Servicio de navegación de las páginas (Página 1 y Página 2), pero ¿cómo puedo llamar al Servicio de navegación de este "padre" usercontrol?¿Es posible?En este USERControl, el servicio de navegación es siempre nulo.

O bien querría acceder al Servicio de navegación desde las páginas que se muestran en el marco, o pasar el botón Haga clic en el evento a estas páginas.

No quiero tener que poner un botón en cada página y manejar la navegación allí.

¿Fue útil?

Solución

Intenta usar

ContentFrame.Navigate(YOUR_URI);

y

ContentFrame.GoBack();

en su padre UserControl que contiene el marco de navegación con X: Name="ContentFrame".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top