导航到另一个 XAML 文件

本文关键字:文件 XAML 另一个 导航 | 更新日期: 2023-09-27 18:37:22

我有三个 XAML 文件,它们是mainwindow.xaml,login.xaml,homepage.xaml .由于文件可以在框架中导航,因此我在主窗口中添加了一个适合整个屏幕的框架。

MainWindow 的 XAML:

<Window x:Class="Myproject.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" WindowState="Maximized" Initialized="Window_Initialized">
    <Grid>
        <Frame Name="pageFrame"></Frame>
    </Grid>
</Window>

主窗口的CS文件:

private void Window_Initialized(object sender, EventArgs e)
{
   pageFrame.Height = SystemParameters.WorkArea.Height-10;
   pageFrame.Width = SystemParameters.WorkArea.Width;
   pageFrame.Navigate(new login());
}

它可以完美地导航到登录页面并在那里执行登录操作。

问题是它无法从login.xaml导航到homepage.xaml.cs

用于从login.xaml导航到homepage.xaml的代码.cs

MainWindow mw = new MainWindow();
mw.pageFrame.Navigate(new homepage());

此代码位于 if 语句部分,如果执行这些语句,我会使用断点checked。它does执行这些,并且填充对象,但不会发生导航。

我做错了什么?这不是正确的方法吗?

导航到另一个 XAML 文件

问题是,好吧,mw是一个窗口,它甚至根本没有显示。并且您停留在旧的 MainWindow 实例中,您的旧 MainWindow 没有任何反应。

您需要从旧的主窗口中导航,而不是新的主窗口。

((MainWindow)(Application.Current.MainWindow)).pageFrame.Navigate(new homepage());

您有一个对主窗口的引用,Application.Current.MainWindow ,但您需要先将其转换为您自己的MainWindow类型。