C# 如何在WPF中导航到上一页,但保留数据?

C# 如何在WPF中导航到上一页,但保留数据?,c#,wpf,C#,Wpf,如何在WPF中导航到上一页,但保留数据 假设我的应用程序Page1和Page2中有两个页面。假设在第1页,用户写了一些输入,比如他的名字,邮件等等 用户在第1页填写了详细信息后,他导航到第2页 现在他想返回到同一页1,如何返回到同一页1和他的所有数据 到目前为止,我一直在页面之间导航,创建一个新页面,如下所示: private void PreviousButton(object sender , RoutedEventArgs e) { Page1 p1 = n

如何在WPF中导航到上一页,但保留数据

假设我的应用程序
Page1
Page2
中有两个页面。假设在第1页,用户写了一些输入,比如他的名字,邮件等等

用户在第1页填写了详细信息后,他导航到第2页

现在他想返回到同一页1,如何返回到同一页1和他的所有数据

到目前为止,我一直在页面之间导航,创建一个新页面,如下所示:

    private void PreviousButton(object sender , RoutedEventArgs e)
    {
        Page1 p1 = new Page1();
        NavigationService.Navigate(p1);
    }

您可以在第2页中保留对第1页的引用:

第1页:Xaml

<Grid>
    <StackPanel>
        <TextBox x:Name="TxbName" Margin="10"/>
        <TextBox x:Name="TxbEmail" Margin="10"/>
        <Button x:Name="BtnNext" Content="Next Page" Click="BtnNext_Click"/>
    </StackPanel>
</Grid>
第2页Xaml:

<Grid>
    <StackPanel>
        <Label x:Name="LblName" Margin="10"/>
        <Label x:Name="LblEmail" Margin="10"/>
        <Button x:Name="BtnPrevious" Content="Previous Page" Click="BtnPrevious_Click"/>
    </StackPanel>    
</Grid>
public partial class Page2
{
    private Page1 _page1;

    public Page2(Page1 page1)
    {
        InitializeComponent();
        _page1 = page1;
    }

    private void BtnPrevious_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(_page1);
    }
}

尝试在页面属性中设置KeepLive=true。检查它是否适合您。

您正在创建上一页的新实例。请尝试保留对该页的引用。如果您发布更多的逻辑,特别是导航到此逻辑的部分,那么我们可以帮助您了解MVVM模式。您可以将数据保存在视图模型中。在MVVM中,通常视图模型与其关联的视图一起处理,因此数据存储/检索的正确位置是与UI无关的程序模型/业务逻辑。
public partial class Page2
{
    private Page1 _page1;

    public Page2(Page1 page1)
    {
        InitializeComponent();
        _page1 = page1;
    }

    private void BtnPrevious_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(_page1);
    }
}