【问题标题】:How can I navigate to the same XAML page in a UWP app?如何导航到 UWP 应用中的同一 XAML 页面?
【发布时间】:2016-02-25 16:09:49
【问题描述】:

我需要导航到 UWP 应用中的同一 XAML 页面。我该怎么做?

我在这里阅读了其他关于简单地将参数传递给 URI 的答案;但是,我没有使用NavigationService.Navigate(new Uri())。在我的示例中,我们使用的是NavigationService.Navigate(typeof(UserSelectionPage), theParameterObject)

我也理解使用带有NotificationChanged 事件的可观察属性可以实现这一点,但我想将这两个传递都保留在后台堆栈中。简而言之,我想要这个:

HomePage -> UserSelectionPage (pass1) -> UserSelectionPage (pass2) -> 确认页面

而且我需要将 UserSelectionPage 的两次传递都保留在后台堆栈中。

【问题讨论】:

  • 你到底想在这里做什么?为什么要让页面导航到它自己?
  • 在主页上,用户指定一个数字(最多3个)来表示他们想要接收的通知数量,我们称之为numberOfNotifications。 UserSelectionPage 将导航到 numberOfNotification 次,允许用户为每个通知设置相同的属性集(存在于 UserSelectionPage 上)。

标签: c# xaml windows-phone-8 win-universal-app


【解决方案1】:

导航到同一页面是不可能的,但您可以更改逻辑以重用您的页面。

首先在pass1中:

用户填写表格或数据,然后我猜他按下下一步按钮或类似的东西进入下一阶段,您需要将所有数据保存在应用程序的本地文件夹中。 设置的名称将是“Pass1”

通过 2:

清除页面或表单的所有值并等待用户填写所有数据,您需要使用我在步骤 1 中解释的相同方法,将数据保存在应用程序的存储中,名称为“通行证2”

最后,您将进入确认页面,您可以在其中检索从设置 Pass1 和 Pass2 的存储中保存的所有数据。

这是一个如何在 UWP 应用中保存设置的示例

https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/ApplicationData

我建议您将所有数据保存为 json 格式,以便非常轻松地对数据进行序列化和反序列化。

更新:

现在我知道您正在使用 MVVM Light,您的所有视图模型都是静态的。

如果您不想保存数据,您可以创建模型的另一个变量(我猜您有一个包含所有属性的类)或另一个属性来备份 pass1 中这些属性的值,然后清除原始属性并等待 Pass2 中的新值

【讨论】:

  • 感谢您的回答,但我认为我不需要将表单数据保存到任何应用程序存储中。由于我使用的是 MVVMLight,所有表单数据都存储在视图模型中,我成功地为 Pass2 填充了这些数据。此外,如果无法导航到同一页面,您如何建议我导航到 Pass2?从您的回答中我不清楚这一点。
【解决方案2】:

刚刚发现在 UWP 中可以导航到同一页面。我需要确保传递的参数不是相同的对象。添加此检查解决了问题。

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多