WPF C# - 文本块输入未保存到导航到新页面?

问题描述 投票:0回答:1

我目前在 WPF 中的页面导航方面遇到问题,我目前有一个带有侧边栏的主窗口,以及窗口中间的一个框架来显示新页面。侧边栏导航似乎工作正常,但问题是每当我导航到新页面并返回时,它都不会保存在任何文本块中填写的任何信息。

我打算使用 .settings 文件来存储它,但我只想在运行时存储用户输入,一旦应用程序关闭,我不需要为下次启动保存信息。我没有看到任何错误/警告被抛出。

  • 我尝试对每个页面使用
    KeepAlive=true
    ,但没有运气,我在想问题是,当按下每个按钮时,我是“重新创建”页面而不是移回页面,因此它正在擦除输入( ?)

(如果有帮助,我正在使用.NET 6.0)

提前感谢您的帮助,如果问题很基本,我很抱歉,我仍在学习。

C#:

  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));
      }
c# .net wpf xaml navigation
1个回答
0
投票

玩了一段时间后,我想出了一个似乎适合我的应用程序的解决方案:

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);
    }

说明: 通过在应用程序首次启动时生成每个页面的静态实例,我可以简单地在每个页面的静态实例之间导航,这些实例在每次导航时保存。

希望这对那里的人有帮助,感谢您的阅读。

© www.soinside.com 2019 - 2024. All rights reserved.