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

本文关键字:XAML 页面 导航 UWP 应用 | 更新日期: 2023-09-27 18:36:16

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

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

我也了解将可观察属性与NotificationChanged事件一起使用可以完成此操作,但我想在反向堆栈中保留到此页面的两个传递。简而言之,我想要这个:

主页 -> 用户选择页面 (pass1) -> 用户选择页面 (pass2) -> 确认页面

我需要将用户选择页面的两个传递都保留在后台堆栈中。

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

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

首先在通行证1中:

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

通行证 2:

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

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

下面是如何在 UWP 应用中保存设置的示例

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

我建议您以 json 格式保存所有数据,以便非常轻松地隔离和反序列化数据。

更新:

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

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

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