Estoy tratando de usar el marco de comandos de navegación en WPF para navegar entre páginas dentro de una aplicación WPF (escritorio, no XBAP o Silverlight).Usando un botón para navegar a otra página en una ventana de navegación
Creo que tengo todo configurado correctamente, pero no funciona. Construyo y corro sin errores, no recibo ningún error de enlace en la ventana de resultados, pero mi botón de navegación está desactivado.
Aquí está la App.xaml para una aplicación de ejemplo:
<Application x:Class="Navigation.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="First.xaml">
</Application>
Tenga en cuenta los puntos StartupUri a First.xaml. First.xaml es una página. WPF aloja automáticamente mi página en una ventana de navegación. Aquí está First.xaml:
<Page x:Class="Navigation.First"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="First">
<Grid>
<Button
CommandParameter="/Second.xaml"
CommandTarget="{Binding RelativeSource=
{RelativeSource
FindAncestor,
AncestorType={x:Type NavigationWindow}}}"
Command="NavigationCommands.GoToPage"
Content="Go!"/>
</Grid>
</Page>
La CommandTarget del botón se establece en NavigationWindow. El comando es GoToPage y la página es /Second.xaml. Intenté configurar CommandTarget en la página que contiene, CommandParameter en "Second.xaml" (First.xaml y Second.xaml están en la raíz de la solución) y he intentado dejar el CommandTarget vacío. También intenté configurar el Camino a la vinculación a varias propiedades públicas relacionadas con la navegación en NavigationWindow. Nada ha funcionado hasta ahora.
¿Qué me falta aquí? I realmente no quiero hacer mi navegación en el código.
Aclaración.
Si, en lugar de utilizar un botón, utilizo un hipervínculo:
<Grid>
<TextBlock>
<Hyperlink
NavigateUri="Second.xaml">Go!
</Hyperlink>
</TextBlock>
</Grid>
todo funciona como se esperaba. Sin embargo, mis requisitos de UI significa que usar un hipervínculo es correcto. Necesito un gran botón graso para que la gente presione. Es por eso que quiero usar el botón para navegar. Solo quiero saber cómo puedo hacer para que Button proporcione la misma capacidad que tiene el hipervínculo en este caso.
Gracias, pero eso no es exactamente aplicable en este caso. He editado mi pregunta para aclararla. Estoy tratando de encontrar una manera para que el botón Comando la ventana de navegación vaya a continuación. Mi código no funciona, así que no estoy insistiendo en que se haga de esa manera. Estoy buscando una forma de hacer que un botón funcione con NavigationWindow. – Will
Básicamente, esta es la única forma de hacerlo. Estoy usando comandos en mi máquina virtual para enganchar los botones. El modelo de vista base contiene una referencia al servicio de navegación de la ventana principal. – Will