如何导航到 UWP 应用中的同一 XAML 页面?

How can I navigate to the same XAML page in a UWP app?

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

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

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

HomePage -> UserSelectionPage (pass1) -> UserSelectionPage (pass2) -> ConfirmPage

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

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

首先在pass1:

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

第 2 轮:

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

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

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

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

我建议您将所有数据保存为 json 格式,以便轻松序列化和反序列化您的数据。

更新:

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

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

中的新值

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