我目前在 WPF 中的页面导航方面遇到问题,我目前有一个带有侧边栏的主窗口,以及窗口中间的一个框架来显示新页面。侧边栏导航似乎工作正常,但问题是每当我导航到新页面并返回时,它都不会保存在任何文本块中填写的任何信息。
我打算使用 .settings 文件来存储它,但我只想在运行时存储用户输入,一旦应用程序关闭,我不需要为下次启动保存信息。我没有看到任何错误/警告被抛出。
KeepAlive=true
,但没有运气,我在想问题是,当按下每个按钮时,我是“重新创建”页面而不是移回页面,因此它正在擦除输入( ?)(如果有帮助,我正在使用.NET 6.0)
提前感谢您的帮助,如果问题很基本,我很抱歉,我仍在学习。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MainFrame.Navigate(new Uri("P1Home.xaml", UriKind.RelativeOrAbsolute));
}
private void BtnHomePage_Click(object sender, RoutedEventArgs e)
{
MainFrame.Navigate(new Uri("P1Home.xaml", UriKind.RelativeOrAbsolute));
}
private void BtnDependencies_Click(object sender, RoutedEventArgs e)
{
MainFrame.Navigate(new Uri("P4Dependencies.xaml", UriKind.RelativeOrAbsolute));
}
private void BtnFinish_Click(object sender, RoutedEventArgs e)
{
MainFrame.Navigate(new Uri("P5Final.xaml", UriKind.RelativeOrAbsolute));
}
玩了一段时间后,我想出了一个似乎适合我的应用程序的解决方案:
App.xaml.cs:
// Defining static instances of each page
public static class PageInstances
{
public static PageOne PageOneInstance { get; } = new PageOne();
public static PageTwo PageTwoInstance { get; } = new PageTwo();
// Define other Pages here
}
MainWindow.xaml.cs:
// Navigation logic via buttons (located in a sidebar)
private void BtnPageOne_Click(object sender, RoutedEventArgs e)
{
MyFrame.NavigationService.Navigate(PageInstances.PageOneInstance);
}
private void BtnPageTwo_Click(object sender, RoutedEventArgs e)
{
MyFrame.NavigationService.Navigate(PageInstances.PageTwoInstance);
}
说明: 通过在应用程序首次启动时生成每个页面的静态实例,我可以简单地在每个页面的静态实例之间导航,这些实例在每次导航时保存。
希望这对那里的人有帮助,感谢您的阅读。