如何在 UWP 中通过多个页面传递对象

How to pass objects through multiple pages in UWP

我的任务是创建一个多页面 UWP 应用程序,该应用程序需要通过多个页面传递学生对象。该应用程序在主页上启动,其中有两个按钮,一个用于添加新学生,另一个用于查看学生详细信息。

我目前正在努力弄清楚如何将学生对象从 "new student page" 传递到 "student details" 页面。我不允许将学生信息存储在文件或数据库中。

添加新学生后,信息应存储在 Student 对象中,是否可以使该对象 public 无需通过页面即可使用?是否也可以将学生详细信息页面上的文本块绑定到来自输入页面的学生对象?

您可以使用 Student class 对象,然后在 Navigate 将其作为参数传递给另一个页面。

New Student 页中:

void ButtonShowDetails_Click(sender , ....)
{
  var student = new Student();
  student.Name="Joe";// or txtStudentName.Text
  /// etc
  /// etc
  Frame.Navigate(typeof(pgStudentDetails), student);
}

pgStudentDetails 页中:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    var param = (Student)e.Parameter; // get parameter
    txtName.Text= param.Name;//show data to user
}

这不是解决这个问题的好方法。

你看...专业开发人员将 UI 仅视为应用程序数据的 "presentation layer",而不是主要逻辑层。

正确的做法是创建一个静态实体作为应用程序逻辑的 "engine",并且在应用程序的所有会话期间都存在。

实际上,通常的实现方式是使用标准的 MainPage 作为应用程序的 "shell",其中包含一个重定向到 MainPage 本身的静态字段(名为 "Current")和一个包含所有应用数据和逻辑的 AppViewModel class。 然后通过绑定所有 XAML 控件来访问 MainPage.Current.ViewModel 数据。

此致