如何在 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) -> 确认页面
我需要将用户选择页面的两个传递都保留在后台堆栈中。
导航到同一页面是不可能的,但您可以更改逻辑以重用您的页面。
首先在通行证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 中可以导航到同一页面。我需要确保传递的参数不是相同的对象。添加此检查解决了问题。