martes, 27 de noviembre de 2012

Navegar desde una Page que está dentro de un Frame

Haciendo la aplicación WPF, y saltándome la arquitectura MVVM hasta que le coja el tranquillo a cosas aún más básicas como esta, me he encontrado con ciertas dificultades para poder pasar de una página a otra.

Esto es debido a que la aplicación corre en una Windows con un Frame en su interior y dentro de este invoco a las Page oportunas. Así la window tiene una declaración tal que así:

<Window x:Class="TSA_KMSPanel.MainWindow"
       
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       
Title="KMSPanel" >
    <
Grid>
        <Frame Name="FrameCuerpo" Source="ListadoClientes.xaml" NavigationUIVisibility="Hidden">
        </
Frame>
    </
Grid>
</
Window>

La página que abre por defecto es Listadoclientes.xaml que tiene un botón que es el que le hace ir a la siguiente página. Y que su xaml es algo así:

<Page x:Class="TSA_KMSPanel.ListadoClientesView"
     
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     
Title="ListadoClientes">

    <
Grid>
       
<Button x:Name="bRecarga"
               
Content=""
               
Cursor="Hand"
               
Click="bRecarga_Click" />
 
    </Grid>
</
Page>

Como has visto las dos únicas cosas que he añadido es que el cursor sea una dedito cuando se pone por encima, y el evento que se lanza cuando el click. Y ahora vamos al truco del almendruco en el code behind.

private void bRecarga_Click(object sender,RoutedEventArgs e)
{
   
this.NavigationService.Navigate(newUri("PantallaClientes.xaml",UriKind.Relative));
}

Y ¿cómo consigo que no salga la barra espantosa de navegación?, pues fíjate en la declaración del frame que va a contener todas las páginas de la aplicación le he dicho:

NavigationUIVisibility="Hidden"

Y con esto tengo la enorme ventaja de que el NavigationService me permite cosas tan chulas como historial de navegación, etc.

1 comentario:

Carlos Lopez dijo...

Tio gracias...no conseguia ocultar la dichosa barra...Gracias!!!