You can get the current current page in code using the CurrentSource property of the navigation window. According to your requirements, this is done using the NavigationService.Navigate () method, as shown below:
NavWindow.xaml:
<NavigationWindow x:Class="WPFTest.MyNavWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="768" Width="1024" Source="ShopList.xaml" Grid.Row="1" WindowState="Maximized" ResizeMode="NoResize" ShowsNavigationUI="True" WindowStyle="SingleBorderWindow" Cursor="Arrow" Navigated="NavigationWindow_Navigated"> </NavigationWindow>
NavWindow.xaml.cs:
namespace WPFTest { public partial class MyNavWindow : NavigationWindow { public MyNavWindow() { InitializeComponent(); } private void NavigationWindow_Navigated(object sender, NavigationEventArgs e) { MessageBox.Show(((NavigationWindow)this).CurrentSource.ToString()); } } }
ShopList.xaml:
<Page x:Class="WPFTest.ShopList" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ShopList"> <Grid> <Label Height="28" Margin="81,12,99,0" Name="label1" VerticalAlignment="Top" FontSize="16" FontWeight="Bold">Shop List</Label> <Button Name="btnNext" Content="Go to Product list" Width="150" Height="30" Margin="0,50,0,0" Click="btnNext_Click"></Button> </Grid>
ShopList.xaml.cs:
namespace WPFTest { public partial class ShopList : Page { public ShopList() { InitializeComponent(); } private void btnNext_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new System.Uri("ProductList.xaml", UriKind.Relative)); } } }
ProductList.xaml:
<Page x:Class="WPFTest.ProductList" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ProductList"> <Grid> <Label Height="28" Margin="81,12,99,0" Name="label1" VerticalAlignment="Top" FontSize="16" FontWeight="Bold">Product List</Label> </Grid> </Page>
It works great for me. Hope this solves your problem. Please feel free to ask if he decides.
UPDATE:
If you want to navigate the page using the class name instead of Uri, you can get the current source, for example:
MessageBox.Show(((NavigationWindow)this).NavigationService.Content.GetType().Name.ToString() + ".xaml");