如何在UWP应用程序中导航到同一个XAML页面?

时间:2016-02-25 16:09:49

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

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

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

我也理解使用带有NotificationChanged事件的可观察属性可以实现这一点,但我希望在backstack中保留这两个传递给这个页面。简而言之,我想要这个:

  

首页 - > UserSelectionPage(pass1) - > UserSelectionPage(pass2) - >   ConfirmPage

我需要在Backstack中保留UserSelectionPage的两次传递。

2 个答案:

答案 0 :(得分:0)

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

首先在pass1中:

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

通过2:

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

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

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

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

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

更新

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

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

答案 1 :(得分:0)

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