【问题标题】:How to pass objects through multiple pages in UWP如何在 UWP 中通过多个页面传递对象
【发布时间】:2018-12-10 07:58:40
【问题描述】:

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

我目前正在努力弄清楚如何将学生对象从“新学生页面”传递到“学生详细信息”页面。我不允许将学生信息存储在文件或数据库中。

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

【问题讨论】:

标签: c# uwp uwp-xaml


【解决方案1】:

您可以使用您的Student 类对象,然后将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
}

【讨论】:

  • 这正是我一直在寻找的,我的问题是像这样传递对象:AddStudentPage -> MainPage -> StudentDetailsPage 但您的评论给了我所需的语法。非常感谢,感谢您的回复
  • 很高兴它有帮助! ;)
【解决方案2】:

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

您会看到……专家级开发人员仅将 UI 视为应用数据的“表示层”,而不是主要逻辑层。

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

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

最好的问候

【讨论】:

    猜你喜欢
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多