C#在页面之间导航而不丢失数据

C#在页面之间导航而不丢失数据,c#,uwp,C#,Uwp,我的任务之一是将数据传递到我理解的另一个页面。但是,当我返回页面时,如何让数据保持不变?有人能解释一下这是怎么回事吗 public sealed partial class MainPage : Page { string userName; public MainPage() { this.InitializeComponent(); } private void btnPage2_Click(object s

我的任务之一是将数据传递到我理解的另一个页面。但是,当我返回页面时,如何让数据保持不变?有人能解释一下这是怎么回事吗

 public sealed partial class MainPage : Page
    {
       string userName;
       public MainPage()
     {

        this.InitializeComponent();
    }

    private void btnPage2_Click(object sender, RoutedEventArgs e)
    {
        Frame.Navigate(typeof(Page2) ,  userName);
    }

    private void btnName_Click(object sender, RoutedEventArgs e)
    {
        userName = Convert.ToString(txtname.Text);
    }
}
我已经回答了一个类似的问题。这里的答案也适用于这个问题,但是在您的案例中,您特别关注问题中的数据部分,因此这里您应该特别注意答案的第二部分-使用比页面本身寿命更长的
ViewModel
,这将是最有益的解决方案。但是,使用
NavigationCacheMode
也就足够了,因为页面类本身及其字段将被保留


这里还有第三个选项可用,即对要保留的字段使用
static
,或者创建一个
static
或将保存数据的单例类。但是,与
ViewModel
解决方案相比,这有一个缺点,因为它不允许在导航堆栈中多次使用具有不同状态数据的单个页面。

我们也可以查看页面类以了解变量是什么吗?