WPF导航删除以前的页面

  • 本文关键字:导航 删除 WPF c# wpf
  • 更新时间 :
  • 英文 :


全部!我正在开发一个需要菜单和框架的WPF应用程序。我使用的是Frame。Navigate,但是,如果我打开了3或4个页面,并且我使用后退按钮返回到第一个页面,然后添加一个新页面,它会从导航中删除在堆栈中向前输入的所有页面。如果导航/菜单功能就是这样工作的,那么当我在页面中的任何位置导航时,如何在不关闭位于新页面前面的页面的情况下添加新页面?提前感谢!


绝对!我在XAML 中有一个框架

XAML:

<Menu x:Name="mnu" DockPanel.Dock="Top" HorizontalAlignment="Left" Background="#FF0062A0" Foreground="#E2E2E2" FontSize="18" FontWeight="Bold">
<MenuItem Header="_Browse">
<MenuItem.Effect>
<DropShadowEffect/>
</MenuItem.Effect>
<MenuItem Foreground="Black" Header="Page1" Name="Page1" Click="Page1_Click"></MenuItem>
<MenuItem Foreground="Black" Header="Page2" Name="Page2" Click="Page2_Click"></MenuItem>
<MenuItem Foreground="Black" Header="Page3" Name="Page3" Click="Page3_Click"></MenuItem>
<MenuItem Foreground="Black" Header="Page4" Name="Page4" Click="Page4_Click"></MenuItem>
<Frame Name="mainFrame" NavigationUIVisibility="Hidden" ></Frame>

后面的代码:应用程序启动时加载Page1。每个页面点击事件都是这样设置的

private void Page1_Click(object sender, RoutedEventArgs e)
{
mainFrame.NavigationService.Navigate(new Page1());
}
private void Page..._Click(object sender, RoutedEventArgs e)
{
mainFrame.NavigationService.Navigate(new Page...());
}

问题的一个例子是:如果我打开第1页、第3页、第4页,然后单击Frame的后退按钮返回第1页。此时,我打开第2页。当我这样做时,Frame(mainFrame(导航上的每一页前面都会关闭(第3页和第4页(。我需要能够在不关闭其他页面的情况下导航到任何屏幕(导航堆栈中的任何位置(。

我尝试过使用旧实例,而不是新的Page1((,但在打开新页面时,它仍然会删除堆栈中位于它前面的所有页面。我可以打开第1页、第3页、第4页,但随后我导航回第1页并尝试导航到第2页,第3页和第4页仍然被删除。以下是我如何处理这个问题:

1 - mainFrame.NavigationService.Navigate(new Page1());
2 - mainFrame.NavigationService.Navigate(new Page3());
3 - mainFrame.NavigationService.Navigate(new Page4());

4-使用"后退"按钮导航回第1页5-现在我调用mainFrame.NavigationService.Navigate(new Page2(((;,然后删除Page3和Page4

最新更新