C# wpf框架。导航可以';当调用两次时,不推堆栈
如上面的代码所示,我希望C# wpf框架。导航可以';当调用两次时,不推堆栈,c#,wpf,C#,Wpf,如上面的代码所示,我希望框架首先导航到“page1”,然后导航到“page2”。 结果,它确实导航到了“page2”,但我在Fram.BackStack中没有看到“page1”。所以我无法返回。我发现Frame.Navigating事件触发了两次,而Frame.Navigated触发了一次。第一次导航似乎被取消了,我想知道为什么? 还有,还有其他方法可以达到这种效果吗?(导航到第1页并快速导航到第2页--->然后导航回第1页) 其他信息: 我的完整c#代码: 以及我的xaml代码: publi
框架首先导航到“page1”,然后导航到“page2”。
结果,它确实导航到了“page2”,但我在Fram.BackStack
中没有看到“page1”。所以我无法返回。我发现Frame.Navigating
事件触发了两次,而Frame.Navigated
触发了一次。第一次导航似乎被取消了,我想知道为什么?
还有,还有其他方法可以达到这种效果吗?(导航到第1页并快速导航到第2页--->然后导航回第1页)
其他信息:
我的完整c#代码:
以及我的xaml代码:
public partial class MainWindow : Window
{
Page1 page1 = new Page1();
Page2 page2 = new Page2();
Page3 page3 = new Page3();
public MainWindow()
{
InitializeComponent();
navi.Navigated += Navi_Navigated;
navi.Navigating += Navi_Navigating;
}
private void Navi_Navigating(object sender, NavigatingCancelEventArgs e)
{
}
private void Navi_Navigated(object sender, NavigationEventArgs e)
{
}
private void btnPreviousPageClick(object sender, RoutedEventArgs e)
{
if (navi.CanGoBack)
{
navi.GoBack();
}
}
private void btnNextClick(object sender, RoutedEventArgs e)
{
navi.Navigate(page1);
navi.Navigate(page2);
}
private void btnNextClick2(object sender, RoutedEventArgs e)
{
navi.Navigate(page2);
}
private void btnNextClick3(object sender, RoutedEventArgs e)
{
navi.Navigate(page3);
}
}
您应该等待导航到Page2
,直到通过处理导航的事件完成导航到Page1
:
<Window x:Class="mmNavigate.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:mmNavigate"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<Frame JournalOwnership="OwnsJournal" NavigationUIVisibility="Visible" x:Name="navi" Height="280"></Frame>
<StackPanel Orientation="Horizontal">
<Button Content="Previous" Click="btnPreviousPageClick"/>
<Button Content="Page1" Margin="20,0,0,0" Click="btnNextClick"/>
<Button Content="Page2" Margin="20,0,0,0" Click="btnNextClick2"/>
<Button Content="Page3" Margin="20,0,0,0" Click="btnNextClick3"/>
</StackPanel>
</StackPanel>
您应该等待导航到Page2
,直到通过处理Navigated
事件完成导航到Page1
:
<Window x:Class="mmNavigate.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:mmNavigate"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<Frame JournalOwnership="OwnsJournal" NavigationUIVisibility="Visible" x:Name="navi" Height="280"></Frame>
<StackPanel Orientation="Horizontal">
<Button Content="Previous" Click="btnPreviousPageClick"/>
<Button Content="Page1" Margin="20,0,0,0" Click="btnNextClick"/>
<Button Content="Page2" Margin="20,0,0,0" Click="btnNextClick2"/>
<Button Content="Page3" Margin="20,0,0,0" Click="btnNextClick3"/>
</StackPanel>
</StackPanel>
您的用例是什么?@Dido我添加了一些代码信息,请转到Page1
中的Navigated
事件。检查您是否来自主页
。如果是,请导航到Page2
。您的用例是什么?@Dido我添加了一些代码信息转到Page1
中的Navigated
事件。检查您是否来自主页
。如果是,请导航到第2页。
private void btnNextClick(object sender, RoutedEventArgs e)
{
navi.Navigated += Navi_Navigated1; ;
navi.Navigate(page1);
}
private void Navi_Navigated1(object sender, NavigationEventArgs e)
{
navi.Navigated -= Navi_Navigated1;
navi.Navigate(page2);
}